【Ansible】タスクの実行条件にホストグループを利用する
Magic変数の使い方をちょろちょろ覚えたいので、動かしながら検証していきます。
今回はタイトルの通りホストグループを使ってタスクの制御を行ってみます。利用するMagic変数はgroup_names
です。
実行環境
$ cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) $ ansible --version ansible 2.8.5
インベントリの内容
[dev] node1 [test] node2 [prod] node3 [web:children] dev test prod
group_namesの確認用Playbook
- hosts: all gather_facts: yes tasks: - debug: var: group_names
実行結果
$ ansible-playbook get_group_names.yml PLAY [all] *********************************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************************** ok: [node2] ok: [node3] ok: [node1] TASK [debug] ********************************************************************************************************************************************* ok: [node3] => { "group_names": [ "prod", "web" ] } ok: [node2] => { "group_names": [ "test", "web" ] } ok: [node1] => { "group_names": [ "dev", "web" ] } PLAY RECAP *********************************************************************************************************************************************** node1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 node2 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 node3 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ホストグループごとにタスクを実行するPlaybook例
- name: 実行条件にホストグループを利用する hosts: all tasks: - ping: when: "'dev' in group_names" - ping: when: "'test' in group_names" - ping: when: "'prod' in group_names" - ping: when: "'web' in group_names"
実行結果
$ ansible-playbook ping.yml PLAY [実行条件にホストグループを利用する] ********************************************************************************************************************************* TASK [Gathering Facts] *********************************************************************************************************************************** ok: [node1] ok: [node3] ok: [node2] TASK [ping] ********************************************************************************************************************************************** skipping: [node3] skipping: [node2] ok: [node1] TASK [ping] ********************************************************************************************************************************************** skipping: [node3] skipping: [node1] ok: [node2] TASK [ping] ********************************************************************************************************************************************** skipping: [node2] skipping: [node1] ok: [node3] TASK [ping] ********************************************************************************************************************************************** ok: [node2] ok: [node1] ok: [node3] PLAY RECAP *********************************************************************************************************************************************** node1 : ok=3 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 node2 : ok=3 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 node3 : ok=3 changed=0 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0