引用Ansible库存表

时间:2018-08-27 15:21:19

标签: ansible ansible-inventory

我希望能够将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”。

有什么方法可以参考库存的层次结构吗?

1 个答案:

答案 0 :(得分:-1)

进行一些快速研究后,看来Ansible没有内置这种功能。

根据Ansible Github存储库中打开的票证,听起来人们对此功能感兴趣,但从未开发过。可能是因为有用性和复杂性之间的斗争。

Ansible Tix

Ansible Tix

以下是上述链接中的一些片段:

  

最好能在Jinja2模板中重新创建广告资源组层次结构。

     

@kinvaris为此,我们有动态清单。您可以只编写一个小的动态清单脚本,然后进行翻译。我不明白为什么这是必要的补充,它只会使工具更加复杂。

如果您只想要与主机相关联的组的列表,而不关心层次结构:

'{{hostvars["host1"]}}'

您将获得如下列表:

"groups": {
            "all": [
                "host"
            ],
            "child": [
                "host1"
            ],
            "parent": [
                "host1"
            ],
            "ungrouped": []
        },