gpt4 book ai didi

ansible - 在多个循环中根据更改的结果运行 Ansible 处理程序

转载 作者:行者123 更新时间:2023-12-04 14:55:44 25 4
gpt4 key购买 nike

我有一个包含 Web 服务器列表的 Ansible 变量(都在同一主机上):

servers:
- foo
- bar
- baz

以及更改其配置文件并将结果注册到变量中的任务:
- name: create server configs
template: ...
with_items: "{{ servers }}"
notify: restart changed servers
register: servers_changed

以及仅重新启动该任务运行时更改的服务器的处理程序:
- name: restart changed servers
command: restart-my-server {{ item.item.name }}
when: item.changed
with_items: "{{ servers_changed.results }}"

我的问题是,我现在需要像上面一样的多个任务,它们会更改不同的配置文件。但是如果我这样做,他们会覆盖 servers_changed变量,所以只使用最后一个。

我可以在每个任务中注册不同的变量,但是我需要为每个任务使用不同的处理程序。这会变得困惑。有没有更好的办法?

最佳答案

使用 servers_changed作为复合列表并连接每个任务的结果:

- name: create server configs
template: ...
with_items: "{{ servers }}"
notify: restart changed servers
register: servers_changed_now

- set_fact:
servers_changed: "{{ servers_changed | default([]) | union(servers_changed_now.results|default([]) }}"


- name: restart changed servers
command: restart-my-server {{ item.item.name }}
when: item.changed
with_items: "{{ servers_changed }}"

关于ansible - 在多个循环中根据更改的结果运行 Ansible 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41233117/

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