FreeBSD 14
Sponsored Link

Ansible : Playbook を利用する (条件)2024/09/11

 

[when], [failed_when] を利用することで、条件分岐が可能となります。

[1] 以下の例は、管理対象ホストに [/var/www/html/index.html] が存在しない場合のみ、ファイルを作成する Playbook です。
freebsd@dlp:~ $
vi playbook_sample.yml
# [failed_when] でタスクの結果を判定し、
# [when] で結果が失敗(=1) の場合は [index.html] を作成

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

  - name: put index.html
    shell: echo "apache httpd index" > /usr/local/www/apache24/data/index.html
    when: file_exists.rc == 1

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

BECOME password:

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

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

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

# 確認

freebsd@dlp:~ $
ansible target_servers -m command -a "ls -l /usr/local/www/apache24/data/index.html"

10.0.0.52 | CHANGED | rc=0 >>
-rw-r--r--  1 root wheel 45 Sep 11 10:29 /usr/local/www/apache24/data/index.html
10.0.0.51 | CHANGED | rc=0 >>
-rw-r--r--  1 root wheel 45 Sep 11 10:29 /usr/local/www/apache24/data/index.html
関連コンテンツ