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 の場合に実行するタスクについてはスキップされていることが分かります。
【参考】公式ドキュメント
Conditionals — Ansible Documentation
―――――――――――――