Ссылка на Ansible Inventory Hiearchy - PullRequest
       8

Ссылка на Ansible Inventory Hiearchy

0 голосов
/ 27 августа 2018

Я бы хотел иметь возможность ссылаться на прямого родителя 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}}, который был бы прямым родителем хоста, в этом case: "resourcegroup2".

Можно ли ссылаться на иерархию инвентаря?

1 Ответ

0 голосов
/ 27 августа 2018

После небольшого исследования выясняется, что Ansible не имеет встроенной функциональности такого рода.

В соответствии с билетами, открытыми в репозитории Ansible Github, похоже, что люди интересовались этой функцией, но никогда не разрабатывались. Вероятно, из-за битвы между полезностью и сложностью.

Ansible Tix

Ansible Tix

Вот некоторые фрагменты из приведенных выше ссылок:

Было бы неплохо иметь способ воссоздать иерархию групп инвентаря внутри шаблона Jinja2.

@ kinvaris У нас есть динамические запасы для этого. Вы можете просто написать небольшой скрипт динамического инвентаризации и сделать так, чтобы он был переведен. Я не понимаю, почему это необходимое дополнение, оно только усложняет инструменты.

Если вы просто хотите получить список групп, связанных с хостом, но не заботитесь об иерархической структуре:

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

Вы получите список, подобный этому:

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