はじめに
ansible-playbook
コマンドの -i
オプションは複数のインベントリを指定できます。
例
ansible-playbook -i inventory01.ini -i inventory02.ini playbook.yml
この記事ではかんたんなサンプルと実行例を紹介します。
- 動作確認環境
- ansible 5.1.0 (asnble-core 2.12.1)
サンプル
インベントリファイルの用意
インベントリファイルを2つ用意します。分かりやすくするため、1つめに group01
、2つめに group02
を定義します。
inventory01.ini
[grouop01] router101 router102
inventory02.ini
[grouop02] server201 server202
合計、4台のホストです。
Playbookの実行
hosts: all
にした適当なPlaybookを実行します。
$ ansible-playbook -i inventory01.ini -i inventory02.ini test.yml PLAY [all] ************************************************************************** TASK [debug inventory_hostname] ***************************************************** ok: [router101] => { "msg": "I am router101" } ok: [router102] => { "msg": "I am router102" } ok: [server201] => { "msg": "I am server201" } ok: [server202] => { "msg": "I am server202" } PLAY RECAP *************************************************************************** router101 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 router102 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 server201 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 server202 : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
2つのインベントリに含まれる4台のホスト分が実行されました。
Playbookを実行せずにホスト一覧を確認する
Playbookを実行せずとも、ホストの確認だけなら他の方法もあります。
ansible-playbook
の --list-hosts
オプションを利用する方法。こちらでは、Playbookが hosts: all
なので、全部出力されます。
$ ansible-playbook -i inventory01.ini -i inventory02.ini test.yml --list-hosts playbook: test.yml play #1 (all): all TAGS: [] pattern: ['all'] hosts (4): server201 router101 router102 server202
ansible-inventory
というインベントリ確認用のコマンドも便利です。
@all: |--@grouop01: | |--router101 | |--router102 |--@grouop02: | |--server201 | |--server202 |--@ungrouped:
少し応用(スタティックとダイナミックの組み合わせ)
先程ほどのサンプルは、スタティックなインベントリを複数していました。スタティックとダイナミックの組み合わせもできます。
ここでは、AzureのVMの情報を利用できる azure.azcollection.azure_rm
インベントリプラグインを利用するインベントリを、2つめに指定します。
$ansible-inventory -i inventory01.ini -i inventory_azure_rm.yml --graph @all: |--@grouop01: | |--router101 | |--router102 |--@rg_ansible_azure: | |--azure01_7192 |--@ungrouped: |--@windows: | |--azure01_7192
rg_ansible_azure
や windows
グループが、azure.azcollection.azure_rm
インベントリプラグインで取得したものです。