1
0
Fork 0
mirror of https://github.com/dawidd6/action-ansible-playbook.git synced 2025-02-22 05:02:17 +00:00

Add check mode and fixes boolean inputs (#111)

* Add check mode option

* Fixes boolean inputs

Boolean inputs weren't working properly before. Passing any value would
result in `true`, which is unexpected and not according to inputs
description. This change retrieves booleans with `getBooleanInput()` and
sets a default to `false`.

Relevant GitHub discussion and comment: https://github.com/actions/toolkit/issues/361#issuecomment-829507270

* Update action.yml

* Update test.yml

* Update test.yml

---------

Co-authored-by: Dawid Dziurla <dawidd0811@gmail.com>
This commit is contained in:
Alex van den Hoogen 2025-02-10 18:11:33 +01:00 committed by GitHub
parent 245b181622
commit a4d1256d3c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 3 deletions

View file

@ -64,7 +64,7 @@ jobs:
PermitRootLogin no
Subsystem sftp /usr/lib/openssh/sftp-server
EOF
sudo systemctl restart sshd
sudo systemctl restart ssh
echo 'SSH_KNOWN_HOSTS<<EOF' >> $GITHUB_ENV
echo $(ssh-keyscan localhost) >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
@ -97,6 +97,13 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: With check mode
uses: ./
with:
playbook: playbook.yml
directory: test
check_mode: true
options: --inventory hosts
- name: With custom ansible.cfg
uses: ./
with:

View file

@ -34,9 +34,15 @@ inputs:
sudo:
description: Set to "true" if root is required for running your playbook
required: false
default: false
no_color:
description: Set to "true" if the Ansible output should not include colors (defaults to "false")
required: false
default: false
check_mode:
description: Set to "true" to enable check (dry-run) mode
required: false
default: false
outputs:
output:
description: The captured output of both stdout and stderr from the Ansible Playbook run

View file

@ -15,8 +15,9 @@ async function main() {
const vaultPassword = core.getInput("vault_password")
const knownHosts = core.getInput("known_hosts")
const options = core.getInput("options")
const sudo = core.getInput("sudo")
const noColor = core.getInput("no_color")
const sudo = core.getBooleanInput("sudo")
const noColor = core.getBooleanInput("no_color")
const checkMode = core.getBooleanInput("check_mode")
const fileMode = 0600
let cmd = ["ansible-playbook", playbook]
@ -94,6 +95,10 @@ async function main() {
process.env.ANSIBLE_FORCE_COLOR = "True"
}
if (checkMode) {
cmd.push("--check")
}
let output = ""
await exec.exec(cmd.join(' '), null, {
listeners: {