gpt4 book ai didi

ansible - 按 `hosts` 次播放限制 ansible playbook

转载 作者:行者123 更新时间:2023-12-03 20:17:56 26 4
gpt4 key购买 nike

我有一个 list 文件,如:

[my_domain]
255.255.255.255

[production:children]
my_domain


[load_balancer:children]
my_domain

[webservers:children]
my_domain

我有一个 playbook.yml喜欢:
---

- hosts: webservers
gather_facts: no
tasks:
- debug:
msg: Hello webservers

- hosts: load_balancer
gather_facts: no
tasks:
- debug:
msg: Hello load_balancer

运行以下命令时,它会运行剧本中的两个剧本,即打印“Hello webservers”和“Hello load_balancer”:
ansible-playbook ./playbook.yml --limit "webservers:&production"

我可以通过向它添加标签并使用 tags 让它只运行网络服务器播放。在命令行上,例如:
...
- hosts: webservers
tags: ['webservers']
# or if using roles then:
# roles:
# - { role: provision_webserver, tags: [ 'provision_webservers' ] }
...

并使用:
ansible-playbook ./playbook.yml --limit "webservers:&production" --tags "webservers"

我希望 limit arg 不仅适用于库存文件,还适用于 hosts每场比赛的值(value)。 The docs seem to suggest this is possible尽管他们使用 ansible 给出了示例和一次性命令而不是 ansible-playbook和剧本:

This can mean what hosts to communicate with, but in terms of Playbooks it actually means what hosts to apply a particular configuration or IT process to.



我认为答案是我使用的剧本错误和 should only have one play per playbook这必然意味着它只有一个 hostsyou select which plays you want to run by changing the playbook<-abc>.yml you are using .但是,最后一个链接也建议您可以使用 --limit设置哪些主机。非常困惑。

最佳答案

你是对的,根据 best practices您可能希望将不同类型的配置拆分为单独的剧本,以便能够单独运行它们。

但是这段文字可能有点困惑:

This is analogous to the “–limit” parameter to ansible but a little more explicit:

ansible-playbook site.yml --limit webservers
ansible-playbook webservers.yml


仅当主机位于 webservers 时才为真组不属于任何其他组。 否则(如您的示例)如果主机 server1成群结队 webserversload_balancers ,然后播放网络服务器和负载平衡器将应用于此主机。

此外,正如您正确指出的,您可以用标签标记剧本的某些部分并使用 --tags按此标准限制剧本运行。

有时我会使用一个技巧将同一主机放在不同的 list 名称下,以便 Ansible 将它们视为不同的主机:
[webservers]
myhost_ws ansible_host=myhost

[load_balancers]
myhost_lb ansible_host=myhost

这样 myhost_wsmyhost_lb实际上是同一个服务器,但是 --limit webservers将仅执行此剧本中的第一次播放:
- hosts: webservers
....

- hosts: load_balancers
....

但请记住,使用此设置为 myhost_ws 收集的任何事实|在第一次播放期间不可用 myhost_lb在第二次直接播放期间(但您仍然可以通过 hostvars['myhost_ws'] 获取它们)。

关于ansible - 按 `hosts` 次播放限制 ansible playbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44541463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com