diff --git a/README.md b/README.md index d513fd9..174b740 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,14 @@ An action that executes given Ansible playbook on selected hosts. playbook: deploy.yml directory: ./ key: ${{secrets.SSH_PRIVATE_KEY}} + inventory: | + [all] + example.com + + [group1] + example.com + vault_password: ${{secrets.VAULT_PASSWORD}} options: | - --inventory hosts --limit dev --extra-vars hello=there --verbose diff --git a/action.yml b/action.yml index bd5889b..a44f860 100644 --- a/action.yml +++ b/action.yml @@ -13,6 +13,12 @@ inputs: key: description: SSH private key used to connect to the host required: true + inventory: + description: Custom content to write into hosts + required: false + vault_password: + description: The password used for decrypting vaulted files + required: false options: description: Extra options that should be passed to ansible-playbook command required: false diff --git a/main.sh b/main.sh index 17a5d37..7e08d36 100755 --- a/main.sh +++ b/main.sh @@ -2,9 +2,14 @@ set -e +default_inventory="hosts" +default_vault_file=".vault_password" + playbook="$INPUT_PLAYBOOK" directory="$INPUT_DIRECTORY" key="$INPUT_KEY" +inventory="$INPUT_INVENTORY" +vault_password="$INPUT_VAULT_PASSWORD" options="$INPUT_OPTIONS" if test -z "$playbook"; then @@ -25,10 +30,22 @@ mkdir -p "$HOME/.ssh" echo "$key" > "$HOME/.ssh/id_rsa" chmod 600 "$HOME/.ssh/id_rsa" +if [ "$inventory" ]; then + echo "Writing inventory with custom content:" + echo -e "$inventory" | tee "$default_inventory" + options="${options} --inventory ${default_inventory}" +fi + +if [ "$vault_password" ]; then + echo "Setting vault password" + echo "$vault_password" > "$default_vault_file" + options="${options} --vault-password-file ${default_vault_file}" +fi + echo "$options" echo "$playbook" export ANSIBLE_HOST_KEY_CHECKING=False export ANSIBLE_FORCE_COLOR=True -ansible-playbook $options $playbook \ No newline at end of file +ansible-playbook $options $playbook