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 伺服器中的所有主機以及 dbserver 中的所有主機
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

相關內容