在“inventory_hostname”时使主机组成为变量的语法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在“inventory_hostname”时使主机组成为变量的语法是什么?相关的知识,希望对你有一定的参考价值。

我最近发现如何使用“when inventory_hostname”来为主机组中的第一个主机设置set_fact。我想知道如何将变量作为主机组传递。在我的测试中,我使用以下内容:

库存文件:

---
[test]
test-001.example.com
test-002.example.com

诗篇文件:

---
declared_hostgroup: test

剧本:

- name: set first host in group as master
  set_fact:
    test_order: MASTER
  when: inventory_hostname == group.test[0]

这很好用。但我想将“group.test”中的“test”替换为变量“declared_hostgroup”。我尝试{{}}语法没有成功。任何建议都会非常感激。

答案

这是正确的语法:

when: inventory_hostname == group[declared_hostgroup][0]

但请记住,尽管Ansible试图保持主机的顺序一致,但它可能会在未来的某个时间制动(例如,不同的排序顺序或其他一些怪癖),因此您可能希望在清单中标记主机内部清单。

以上是关于在“inventory_hostname”时使主机组成为变量的语法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

ansible变量

在使用调试模块时,对主机执行 Ansible ssh

Jinja模板循环问题

jinja 多值合并

Ansible11:变量详解

如何在触摸释放时使 IBAction 方法无效