---
- hosts: pupservers
sudo: yes
tasks:
- command: bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 1 --topic my-replicated-topic
with_inventory_hostnames: zookservers
在上面的代码中,我需要调用在 list 文件中声明为zookservers的另一个变量的IP地址,而不是本地主机。
我尝试了不同的方法,但没有任何效果,尝试调用 {{ ansible_ssh_host }}
、{{ Zookservers[ansible_ssh_host] }}
提前致谢。
最佳答案
问题是,你的游戏仅限于 pupservers
组。 Ansible 只会知道有关它应该运行某些内容的主机的事实。 zookservers
是一个不参与你的游戏的不同组,因此 Ansible 不会连接到这些主机,也不会收集事实(包括 IP)
要使 Ansible 收集 zookservers
组主机上的事实,您只需向剧本中添加一个空剧本即可。所以你的剧本将如下所示:
- hosts: zookservers
- hosts: pupservers
sudo: yes
tasks:
- ...
<子> Fact caching将是另一种选择,但我想这应该适合您的需求。
在你的循环中,你应该能够通过
获取 IP{{ hostvars[item].ansible_eth0.ipv4.address }}
关于linux - 如何从 list 文件调用/包含 IP 地址到 ansible playbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110300/