我有一个清单,其中定义了一些变量,例如服务器ip:
all:
children:
my_servers:
children:
data:
hosts:
data01.mydomain:
ansible_host: 10.0.0.1
es_name: "data01"
data02.mydomain:
ansible_host: 10.0.0.2
es_name: "data02"
我知道要访问主机名,我可以使用类似“ {{groups ['data']}}”的名称,这将遍历主机名。
我想做的是遍历每个主机名中的变量“ ansible_host”(以在防火墙上打开规则)。我可以使用“ {{hostvars ['data01'] ['ansible_host']}}”获得一个值,但找不到遍历清单中所有主机的方法。
答案 0 :(得分:1)
您在这里。请记住使用-i hosts
---
- name: Play
hosts: localhost
tasks:
- name: iterate
debug:
msg: "{{ item }}:{{ hostvars[item].ansible_ssh_host }}"
with_items:
- "{{ groups['all'] }}"
ansible-playbook -i hosts play.yml