ansible-playbook --限制超过一台主机?

Con*_*Fun 15 ansible 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

但是,我需要内联完成这一切,而不创建额外的文件。

Vla*_*tka 17

相同的常见模式适用于命令行选项-l。引用注释:

“您可以使用逗号 (,) 或冒号 (:) 来分隔主机列表。在处理范围和 IPv6 地址时,首选逗号。”

例如,给定库存

shell> cat hosts
[webservers]
test_01
test_02

[dbservers]
test_03
test_04
Run Code Online (Sandbox Code Playgroud)

和剧本

shell> cat pb.yml 
- hosts: all
  tasks:
    - debug:
        var: inventory_hostname
Run Code Online (Sandbox Code Playgroud)

各种主机的模式按预期工作。例如

  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
Run Code Online (Sandbox Code Playgroud)
  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
Run Code Online (Sandbox Code Playgroud)
  1. 网络服务器中除主机 test_02 之外的所有主机
shell> ansible-playbook -i hosts pb.yml  -l webservers:\!test_02

  inventory_hostname: test_01
Run Code Online (Sandbox Code Playgroud)


小智 10

操作方法如下:

ansible-playbook ./your_playbook --limit "host1,host2,host3,host4"
Run Code Online (Sandbox Code Playgroud)


Con*_*Fun 4

我当时有点发呆,当时我完全认为我可以直接列出所有内嵌的主机并且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

  • 您还可以使用单个“-l”和[用“,”或“:”分隔主机](https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html#common-patterns )。 (3认同)