Ansible 如何获取同一组中主机(当前主机除外)的所有清单变量?

Ansible 如何获取同一组中主机(当前主机除外)的所有清单变量?,ansible,jinja2,Ansible,Jinja2,假设我们有一个类似这样的可分解库存: [somegroup] host1 secondaryIp=1.0.0.0 host2 secondaryIp=1.0.0.1 host3 secondaryIp=1.0.0.2 在运行任务(特别是模板模块)时,是否有方法获取组[somegroup]中“所有其他主机”的secondaryIp列表 我尝试搜索ansible筛选器: 我唯一的工作想法是在库存中这样做: [somegroup] host1 secondaryIp=1.0.0.0 otherIps

假设我们有一个类似这样的可分解库存:

[somegroup]
host1 secondaryIp=1.0.0.0
host2 secondaryIp=1.0.0.1
host3 secondaryIp=1.0.0.2
在运行任务(特别是模板模块)时,是否有方法获取组[somegroup]中“所有其他主机”的secondaryIp列表

我尝试搜索ansible筛选器:

我唯一的工作想法是在库存中这样做:

[somegroup]
host1 secondaryIp=1.0.0.0 otherIps="1.0.0.1,1.0.0.2"
host2 secondaryIp=1.0.0.1 otherIps="1.0.0.0,1.0.0.2"
host3 secondaryIp=1.0.0.2 otherIps="1.0.0.0,1.0.0.1"

您可以使用
groups['somegroup']
获取组中主机的列表,并使用
hostvars
访问其变量。要排除ansible当前正在运行的主机,只需检查列表中的当前主机是否等于
inventory\u hostname
。下面是它在实践中的工作原理

在模板中

{% for host in groups['somegroup'] %}
{% if host != inventory_hostname %}
{{ hostvars[host]['secondaryIp'] }}
{% endif %}
{% endfor %}
在任务中

- name: debug
  debug:
    msg: "{{ hostvars[item]['secondaryIp'] }}"
  when: item != inventory_hostname
  with_items: "{{ groups['somegroup'] }}"
其中是(1)您尝试过的代码;(2) 你的预期结果;(3) 你的实际结果如何?