1

我设置了一组测试虚拟机(使用纯 Debian)来玩,它们都在测试网络上,所以它是一组独立的虚拟机。这些虚拟机很快就会被销毁,所以我不想将其名称添加到 DNS,同时我需要让它们与烤箱主机名通信。

有什么方法可以/etc/hosts根据 Ansible 文件中的主机 IP 在这些虚拟机上形成hosts文件?

我可以这样设置主机名

192.168.0.5 myhostname=host01.local
192.168.0.6 myhostname=host02.local

所以我想我可以以某种方式形成/etc/hosts

{{ ip }} {{ myhostname }}

但可以存档。我想我可以迭代group['all']并使用lineinfileto 添加行/etc/hosts,但到目前为止它对我不起作用。

4

1 回答 1

0

您可以使用该inventory_file变量来获取主机文件的路径文件名:

还可用inventory_dir的是保存 Ansible 的清单主机文件的目录的路径名,inventory_file是指向 Ansible 的清单主机文件的路径名和文件名。

参考

您可以使用以下内容读取其变量:

tasks:
  - local_action: shell cat {{ inventory_file }}
    register: result

正如这里推荐的那样。更多关于本地行动的信息。

然后,您可以使用jinja 过滤器循环来使用该变量。

于 2016-05-26T11:20:28.517 回答