はじめに
Ansible には、all
と ungrouped
というデフォルトで定義されたグループがあります。
all
はすべてのホストが所属するグループです。
一方で、 ungrouped
は、明示的なグループに所属さないホストが暗黙的に所属するグループです。
言葉では少しわかりにくいかもしれませんので、例で説明します。
- 動作確認環境
- Ansible 2.9.10
インベントリファイル
以下のようなインベントリファイルを想定します。
rt01 rt02 [ios] ios01 ios02 [eos] eos01 eos02
上記のうち、rt01
と rt02
はどの明示的なグループ(ios
、eos
)にも所属していません。
この rt01
と rt02
が ungrouped
に所属することになります。
確認
グループの所属関係は、ansible-inventoy
コマンドの --graph
オプションを利用すると視覚的にわかりやすいです。(参考)
$ ansible-inventory -i inventory.ini --graph @all: |--@eos: | |--eos01 | |--eos02 |--@ios: | |--ios01 | |--ios02 |--@ungrouped: | |--rt01 | |--rt02
ungrouped
グループに、rt01
、rt02
が所属していることが分かります。また、ungrouped
グループは all
グループに所属しています。
Playbook 内でも ungrouped
グループをターゲットにできます。
--- - hosts: ungrouped gather_facts: false tasks: - name: debug debug: msg: "{{ inventory_hostname }} in ungrouped"
実行すると、rt01
と rt02
を対象に実行されます。
$ ansible-playbook -i inventory.ini ungrouped.yml PLAY [ungrouped] ************************************************************************************************* TASK [debug] ***************************************************************************************************** ok: [rt02] => { "msg": "rt02 in ungrouped" } ok: [rt01] => { "msg": "rt01 in ungrouped" } PLAY RECAP ******************************************************************************************************* rt01 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 rt02 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0