清单中有此主机组
[test-node]
usprz3-sec-asept-dz03.prz.foo.com
usprz3-sec-asept-dz04.prz.foo.com
我想通过.j2模板在文件中打印这些主机名 我不想遍历列表,我只想在一个位置打印组中的第一项,而在另一位置打印第二项。是否有类似下面的方法可以给我想要的效果?
[test-node].0 should print usprz3-sec-asept-dz03.prz.foo.com
[test-node].1 usprz3-sec-asept-dz04.prz.foo.com
我的ansible版本是ansible 2.5.4
谢谢。
答案 0 :(得分:1)
Special Variables中提供了组和主机的列表。
下的任务- template:
src: test-template.j2
dest: test.txt
和模板(test-template.j2)
{% for item in groups['test-node'] %}
[test-node].{{loop.index}} {{ item }}
{% endfor %}
给予:
> cat test.txt
[test-node].1 usprz3-sec-asept-dz03.prz.foo.com
[test-node].2 usprz3-sec-asept-dz04.prz.foo.com
答案 1 :(得分:1)
以弗拉基米尔的例子为例,您可以将列表中的第一台主机打印为
function(b)
这将打印usprz3-sec-asept-dz03.prz.foo.com
,第二个主机为
{{ groups['test-node'].0 }}
这将打印usprz3-sec-asept-dz04.prz.foo.com