はじめに
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