在Ansible中,如何在模板中的库存文件中使用变量

时间:2017-04-21 16:06:14

标签: ansible jinja2

我有这个库存文件

库存/ hosts_elk

[elk-client-0]
10.11.22.22

现在我有了一个模板,我想这样做

elk_server.yml.j2

elk_server = {{ elk-client-0 }}

但这不起作用,即{{elk-client-0}}的值不会被取代。

正确的语法是什么,所以当模板在服务器上布局时,生成的文件看起来像

elk_server = 10.11.22.22

3 个答案:

答案 0 :(得分:4)

神奇的语法是

elk_server: {{ groups['elk-client-0'][0] }}

答案 1 :(得分:0)

我认为您正在寻找inventory_hostname和/或ansible_hostname http://docs.ansible.com/ansible/playbooks_variables.html

答案 2 :(得分:0)

就安全清单而言,elk-client-0是一个托管组,可通过groups.<name>访问。 具体来说,您想要查找特定主机组的清单中的第一个(或最后一个?)主机,因此您可以在模板中执行此操作:

elk_server = {{groups.elk-client-0|random}}

从“现在”开始,将始终返回1项。 但是当你的主机组成长时,它会掷骰子。 如果您需要始终firstlast,请使用这些过滤器。