gpt4 book ai didi

ansible - 使用寄存器变量存储多主机播放的值

转载 作者:行者123 更新时间:2023-12-01 04:48:19 25 4
gpt4 key购买 nike

我有一个包含两个剧本的 ansible 剧本,第一个剧本的输出将由第二个剧本使用。所以我使用寄存器变量来存储输出。问题是我的游戏打算在多台主机上运行,​​而不是在单台主机上运行,​​并且寄存器的输出每次都被覆盖,而且我没有最后 (n-1) 次执行的值。

我的剧本是这样的:

- name: Perform task 
hosts: db_server
connection: local
gather_facts: no
vars:
- method: "{{ method }}"

roles:
- {role: run_custom_module, tags: ["maintenance"]}


- name: Second task based on output of first
hosts: db_server
connection: local
gather_facts: no
vars:
- method: "{{ method }}"

roles:
- {role: run_custom_module, when: result=="some_string"}

角色 run_custom_module 如下所示:
- name: Executing the custom module
run_custom_module:
task: "Run custom py module"
var: "{{ method }}"
register: result

库存文件如下所示:
[db_server]
1.1.1.1
2.2.2.2
3.3.3.3

在 with_items 的情况下,寄存器变量将输出存储在名为 的列表中。结果 , 引用 here .基于类似的理由,如何将多主机播放的输出存储在寄存器变量中,以便它可以用于同一剧本的第二次播放?

最佳答案

注册变量是事实。您可以使用 hostvars 访问其他主机上的事实。 .

例如,您可以访问 result主机的注册变量 1.1.1.1hostvars['1.1.1.1'].result .

您可以使用 groups 列出组中的所有主机.

例如,您可以列出 db_server 中的所有主机。与 groups['db_server'] 组.

总结一下,你可以尝试这样的事情:

---
- hosts: db_server
tasks:
- ping:
register: result

- debug: var=hostvars[item].result
with_items: "{{ groups['db_server'] }}"

关于ansible - 使用寄存器变量存储多主机播放的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44648084/

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