首页 > 解决方案 > Ansible:如何通过主机组中的索引号获取主机

问题描述

我在清单中有这个主机组

[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

谢谢你。

标签: ansible

解决方案


组和主机列表在特殊变量中可用。下面的任务

- 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

推荐阅读