我希望能够将ansible主机的直接父级引用为变量。
以以下示例清单为例:
[resourcegroup1]
host1
host2
[resourcegroup2]
host3
host4
[application:children]
[resourcegroup1]
[database:children]
[resourcegroup2]
[environoments:children]
[application]
[database]
[enivronoments]
dev
staging
prod
我想在一个可以引用主持人父母的剧本中执行循环任务。示例:
tasks:
- name: Start Datanbase Servers
with_items: "{{ groups['database'] }}"
azure_rm_virtualmachine:
name: "{{ item }}"
resource_group: "{{ item.parent }}"
started: yes
allocated: yes
{{item}}将遍历“ host3”和“ host4”的值,而我正在寻找可以代替{{item.parent}}作为主机直接父级的东西案例:“ resourcegroup2”。
有什么方法可以参考库存的层次结构吗?
答案 0 :(得分:-1)
进行一些快速研究后,看来Ansible没有内置这种功能。
根据Ansible Github存储库中打开的票证,听起来人们对此功能感兴趣,但从未开发过。可能是因为有用性和复杂性之间的斗争。
以下是上述链接中的一些片段:
最好能在Jinja2模板中重新创建广告资源组层次结构。
@kinvaris为此,我们有动态清单。您可以只编写一个小的动态清单脚本,然后进行翻译。我不明白为什么这是必要的补充,它只会使工具更加复杂。
如果您只想要与主机相关联的组的列表,而不关心层次结构:
'{{hostvars["host1"]}}'
您将获得如下列表:
"groups": {
"all": [
"host"
],
"child": [
"host1"
],
"parent": [
"host1"
],
"ungrouped": []
},