gpt4 book ai didi

deployment - Ansible 在主机上下文之间传递变量

转载 作者:行者123 更新时间:2023-12-02 00:43:47 25 4
gpt4 key购买 nike

正如标题所说,当我希望能够将在一个主机组下注册的变量传递给另一个主机组时,但我不确定该怎么做,而且我在该变量下找不到任何相关内容文档 http://docs.ansible.com/ansible/playbooks_variables.html

这是我想要看到的简化示例。我有一个剧本,可以调用许多不同的组并检查符号链接(symbolic link)指向的位置。我希望能够在播放结束时将所有符号链接(symbolic link)目标报告给控制台。

问题是注册值仅在定义它的主机组下有效。是否有导出这些变量的正确方法?

---
- hosts: max_logger
tasks:
- shell: ls -la /home/ubuntu/apps/max-logger/active | awk -F':' '{print $NF}'
register: max_logger_old_active

- hosts: max_data
tasks:
- shell: ls -la /home/ubuntu/apps/max-data/active | awk -F':' '{print $NF}'
register: max_data_old_active

- hosts: "localhost"
tasks:
- debug: >
msg="The old max_logger build is {{ max_logger_old_active.stdout }}
The old max_data build is {{ max_data_old_active.stdout }}"

最佳答案

你不需要在这里传递任何东西(你只需要访问)。注册变量存储为主机事实,并且在整个剧本运行时存储在内存中,因此您可以从所有后续剧本中访问它们。

这可以通过使用 magic variable hostvars 来实现.

但是您需要引用一个主机名,它不一定与您在问题中发布的主机组名称(例如 max_logger)相匹配:

- hosts: "localhost"
tasks:
- debug: >
msg="The old max_logger build is {{ hostvars['max_logger_host'].max_logger_old_active.stdout }}
The old max_data build is {{ hostvars['max_data_host'].max_data_old_active.stdout }}"

您还可以编写 hostvars['max_data_host']['max_data_old_active']['stdout']

关于deployment - Ansible 在主机上下文之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45112308/

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