gpt4 book ai didi

ansible - 从组剧本访问整个 Ansible Inventory

转载 作者:行者123 更新时间:2023-12-02 16:07:20 25 4
gpt4 key购买 nike

我正在尝试从仅在单个组中运行的 playbook 中获取 list 文件中所有主机的 IP 列表。

假设有以下库存文件:

[dbservers]
db1.example.com
db2.example.com

[webservers]
www1.example.com
www2.example.com

以及剧本:

---

- hosts: dbservers
roles:
- dosomething

以及 dosomething 角色:

- name: print all host ips
template: src=hosts.j2 dest=/tmp/hosts.txt

和hosts.j2模板:

{% for host in hostvars %}

{{ hostvars[host].ansible_eth0.ipv4.address }}

{% endfor %}

问题:

运行此程序时,我只获得列出的 dbserver ip,而不是所有 ip

问题:

我如何才能访问此剧本中的整个库存?将剧本中的主机更改为 all 有效,但 dosomething 剧本也会在所有主机上运行,​​这不是我想要的。我只想要数据库服务器上的列表。

最佳答案

为了获得对 hostvars 中所有主机的访问权限,您首先必须为所有主机创建一个任务。我创建了一个简单的角色,可以在所有主机上简单地回显某些内容。然后,该角色强制收集所有主机上的事实并将每个主机添加到 hostvars 组。

请注意,如果您随后运行带有标签限制的 playbook,则 hostvars 组将再次受到影响。

我在这里得到了提示:https://groups.google.com/forum/#!msg/Ansible-project/f90Y4T4SJfQ/L1YomumcPEQJ

关于ansible - 从组剧本访问整个 Ansible Inventory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25410010/

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