Ansible:列出所有主机以将其添加到'hosts'文件

时间:2016-05-26 08:55:12

标签: ansible ansible-inventory

我设置了一组测试虚拟机(使用纯Debian),所有这些都在测试网络上,因此它是独立的VM组。这些虚拟机很快就会被销毁,因此我不希望将其名称添加到DNS,而我需要让它们与烤箱主机名进行通信。

我是否有办法根据Ansible /etc/hosts文件中的主机IP在这些虚拟机上形成hosts个文件?

我可以像这样设置主机名

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

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

{{ ip }} {{ myhostname }}

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

1 个答案:

答案 0 :(得分:0)

您可以使用inventory_file变量获取hosts文件的路径文件名:

  

同样可用,inventory_dir是持有Ansible库存主机文件的目录的路径名,inventory_file是路径名和指向Ansible库存主机文件的文件名。

Reference

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

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

按照建议here。更多关于local actions的信息。

然后,您可以使用jinja filtersloops来使用变量。