我设置了一组测试虚拟机(使用纯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
添加行,但到目前为止它对我不起作用。
答案 0 :(得分:0)
您可以使用inventory_file
变量获取hosts文件的路径文件名:
同样可用,
inventory_dir
是持有Ansible库存主机文件的目录的路径名,inventory_file
是路径名和指向Ansible库存主机文件的文件名。
您可以使用以下内容读取变量:
tasks:
- local_action: shell cat {{ inventory_file }}
register: result
按照建议here。更多关于local actions的信息。
然后,您可以使用jinja filters和loops来使用变量。