ansible-playbook -- 複数のホストを制限しますか?

ansible-playbook -- 複数のホストを制限しますか?

さまざまな理由/制限により、インベントリ ファイルに新しいグループを作成できず、--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

さまざまなホストのパターンは期待どおりに動作します。たとえば

  1. 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
  1. ホスト 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
  1. ホスト 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

関連情報