Bra*_*o__ 2 deployment ansible
正如标题所说,当我希望能够将在一个主机组下注册的变量传递到另一个主机组时,但我不知道该怎么做,并且在变量文档http:下找不到任何相关内容: //docs.ansible.com/ansible/playbooks_variables.html
这是我想要看到的简化示例。我有一个剧本,可以调用许多不同的组并检查符号链接指向的位置。我希望能够在播放结束时将所有符号链接目标报告给控制台。
问题是注册值仅在定义它的主机组下有效。是否有导出这些变量的正确方法?
---
- 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 }}"
Run Code Online (Sandbox Code Playgroud)
你不需要在这里传递任何东西(你只需要访问)。注册的变量存储为宿主事实,并且在整个 playbook 运行时将它们存储在内存中,因此您可以从所有后续播放中访问它们。
这可以使用魔法变量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 }}"
Run Code Online (Sandbox Code Playgroud)
你也可以写hostvars['max_data_host']['max_data_old_active']['stdout']。
| 归档时间: |
|
| 查看次数: |
3661 次 |
| 最近记录: |