さまざまな理由/制限により、インベントリ ファイルに新しいグループを作成できず、--limit/-l
ホストを指定するために を使用する必要があります。
次のようなことをするように言われました:
ansible-playbook -i /path/to/my/inventory/file.ini -l server.1.com server.2.com my-playbook.yml --check --diff
これはエラーをスローしていました:
ERROR! the playbook: server.2.com could not be found
からAnsible ドキュメントこの件に関して、制限したいホストをすべてリストするために別のファイルを使用できることがわかりました。次のようになります:
ansible-playbook -i /path/to/my/inventory/file.ini -l @list-to-limit.txt my-playbook.yml
ただし、追加のファイルを作成せずにすべてをインラインで実行する必要があります。
答え1
同じ共通パターンコマンドラインオプションに適用されます-l
。注記を引用します:
「ホストのリストを区切るには、カンマ (,) またはコロン (:) を使用できます。範囲と IPv6 アドレスを扱う場合は、カンマを使用することをお勧めします。」
例えば、在庫が
shell> cat hosts
[webservers]
test_01
test_02
[dbservers]
test_03
test_04
そしてプレイブック
shell> cat pb.yml
- hosts: all
tasks:
- debug:
var: inventory_hostname
さまざまなホストのパターンは期待どおりに動作します。たとえば
- Web サーバーのすべてのホストと DB サーバーのすべてのホスト
shell> ansible-playbook -i hosts pb.yml -l webservers:dbservers
...
ok: [test_01] =>
inventory_hostname: test_01
ok: [test_02] =>
inventory_hostname: test_02
ok: [test_03] =>
inventory_hostname: test_03
ok: [test_04] =>
inventory_hostname: test_04
- ホスト test_02 と test_04
shell> ansible-playbook -i hosts pb.yml -l test_02,test_04
ok: [test_02] =>
inventory_hostname: test_02
ok: [test_04] =>
inventory_hostname: test_04
- ホスト test_02 を除くウェブサーバー内のすべてのホスト
shell> ansible-playbook -i hosts pb.yml -l webservers:\!test_02
inventory_hostname: test_01
答え2
やり方は次のとおりです:
ansible-playbook ./your_playbook --limit "host1,host2,host3,host4"
答え3
私はぼんやりしていたので、その時はホストをすべてインラインでリストアップすればansible-playbook
理解できると思っていました。
-l
コマンド内の各ホスト名の前に追加するだけで問題は解決しました。
(これは「ベストプラクティス」ではないかもしれないと認識しています)
最終的なコマンドは次のようになります。
ansible-playbook -i /path/to/my/inventory/file.ini -l server.1.com -l server.2.com my-playbook.yml --check --diff