首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible:如何通过主机组中的索引号获取主机

问Ansible:如何通过主机组中的索引号获取主机
EN

Stack Overflow用户
提问于 2019-03-26 11:49:00
回答 2查看 406关注 0票数 0

我的清单中有此主机组

代码语言:javascript
复制
[test-node]
usprz3-sec-asept-dz03.prz.foo.com
usprz3-sec-asept-dz04.prz.foo.com

我想通过.j2模板在一个文件中打印这些主机名,我不想遍历列表,我只想在一个地方打印组中的第一个项目,在另一个地方打印第二个项目。有没有像下面这样的方法可以给我想要的效果?

代码语言:javascript
复制
[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

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-03-26 12:34:07

Special Variables中提供了组和主机的列表。下面的任务

代码语言:javascript
复制
- template:
    src: test-template.j2
    dest: test.txt

和模板(test-template.j2)

代码语言:javascript
复制
{% for item in groups['test-node'] %}
[test-node].{{loop.index}}    {{ item }}
{% endfor %}

提供:

代码语言:javascript
复制
> cat test.txt
[test-node].1    usprz3-sec-asept-dz03.prz.foo.com
[test-node].2    usprz3-sec-asept-dz04.prz.foo.com
票数 1
EN

Stack Overflow用户

发布于 2019-03-26 20:49:21

以Vladimir为例,您可以将列表中的第一个主机打印为

代码语言:javascript
复制
{{ groups['test-node'].0 }}

这将打印usprz3-sec-asept-dz03.prz.foo.com

和第二个主机作为

代码语言:javascript
复制
{{ groups['test-node'].1 }}

这将打印usprz3-sec-asept-dz04.prz.foo.com

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55349570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档