我最近发现如何使用“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试图保持主机的顺序一致,但它可能会在未来的某个时间制动(例如,不同的排序顺序或其他一些怪癖),因此您可能希望在清单中标记主机内部清单。