Debian 12 bookworm
Sponsored Link

Ansible : Use Playbook (when)2023/08/01

 

To use [when], [failed_when], it's possible to write branch condition in Ansible Playbook.

[1] For example, create a Playbook which only if it does not exist [/var/www/html/index.html], create it on target hosts.
debian@dlp:~$
vi playbook_sample.yml
# set boolean with [failed_when],
# create [index.html] if result of boolean is [1]

- hosts: target_servers
  become: yes
  become_method: sudo
  tasks:
  - name: index file exists or not
    shell: test -f /var/www/html/index.html
    ignore_errors: true
    register: file_exists
    failed_when: file_exists.rc not in [0, 1]

  - name: put index.html
    shell: echo "apache2 index" > /var/www/html/index.html
    when: file_exists.rc == 1

debian@dlp:~$
ansible-playbook playbook_sample.yml --ask-become-pass

BECOME password:

PLAY [target_servers] **********************************************************

TASK [Gathering Facts] *********************************************************
ok: [10.0.0.51]
ok: [10.0.0.52]

TASK [index file exists or not] ************************************************
changed: [10.0.0.52]
changed: [10.0.0.51]

TASK [put index.html] **********************************************************
skipping: [10.0.0.51]
skipping: [10.0.0.52]

PLAY RECAP *********************************************************************
10.0.0.51                  : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0
10.0.0.52                  : ok=2    changed=1    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0

# verify

debian@dlp:~$
ansible target_servers -m command -a "ls -l /var/www/html/index.html"

10.0.0.52 | CHANGED | rc=0 >>
-rw-r--r-- 1 root root 10701 Jul 31 19:15 /var/www/html/index.html
10.0.0.51 | CHANGED | rc=0 >>
-rw-r--r-- 1 root root 10701 Jul 31 19:15 /var/www/html/index.html
Matched Content