Ansible:when でタスク実行条件を指定する(Ansible 2.9.6)

インフラサーバ

when オプションについて

タスクに対して when オプションを使用することで、指定した条件に合致する場合のみタスクを実行させることができます。

使用例

作業環境

  • CentOS 8.0
  • Python 3.7.7
  • Ansible 2.9.6

使用例

  • 管理対象の OS が特定の OS の場合のみ実行するタスクを作成する

■ playbook.yml

- hosts: all
  become: yes
  tasks:
    - name: Target OS family
      debug:
        msg: '{{ ansible_os_family }}'
    - name: Task for RedHat
      debug:
        msg: 'Task for RedHat'
      when: ansible_os_family == 'RedHat'
    - name: Task for Debian
      debug:
        msg: 'Task for Debian'
      when: ansible_os_family == 'Debian'

■ Ansible 実行結果

$ ansible-playbook -i hosts playbook.yml

PLAY [all] ******************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************
ok: [localhost]

TASK [Target OS family] *****************************************************************************************************
ok: [localhost] => {
    "msg": "RedHat"
}

TASK [Task for RedHat] ******************************************************************************************************
ok: [localhost] => {
    "msg": "Task for RedHat"
}

TASK [Task for Debian] ******************************************************************************************************
skipping: [localhost]

PLAY RECAP ******************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0

上記例では、OS ファミリーが RedHat の場合に実行するタスクと、Debian の場合に実行するタスクを Playbook に記載していますが、実行結果では Debian の場合に実行するタスクについてはスキップされていることが分かります。

【参考】公式ドキュメント

https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html

―――――――――――――

タイトルとURLをコピーしました