linux - 如何从 list 文件调用/包含 IP 地址到 ansible playbook

标签 linux shell unix ansible redhat

---

- 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/

相关文章:

linux - 重命名文件的shell脚本

linux - 使用 dpkg 从 debian 软件包安装的文件不属于 root

linux - 使用 linux 过滤 apache 文件

linux -\!在 Bash 命令中

c - 为什么要在结构体之前添加标识符?我不明白为什么,如何解决这个问题?

linux - Linux中的自定义用户和自定义权限

linux - 使用 grep 命令,我可以打印与我的命令匹配的数据,但是当数据不可用时如何打印错误?

PHP exec 处理简单的 3 管道 grep 非常慢

c++ - 如何搜索 PDF?

shell - Ubuntu shell - 消除一行的条件