Переменная переменной в Ansible Playbook

Я пытаюсь получить доступ к переменным, которые определены в group_vars

group_vars / все

parent1:
  child1: somevalue1
  child2: somevalue2

parent2:
  child1: somevalue1
  child2: somevalue2

Теперь я передаю parent деталь из дополнительных переменных, подобных этой

ansible-playbook playbook.yml -e "parent=parent1"

Как я могу получить доступ к значению parent1.child1, где parent1 входит в {{ parent }} вары?

Моя playbook выглядит так: -

playbook.yml

- hosts: local
  user: roop
  gather_facts: no
  connection: local

  vars: 
     parent: ""

  tasks: 

  #get parent value
  - debug: msg={{ parent }}

  #trying to access parent1.child1 value here
  - debug: msg={{ {{ parent }}.child1 }}

Выход playbook: -

PLAY [local] ******************************************************************

TASK: [debug msg=local] *******************************************************
ok: [127.0.0.1] => {
    "msg": "parent1"
}

TASK: [debug msg={{{{parent}}.child1}}] ***************************************
ok: [127.0.0.1] => {
    "msg": "{{{{parent}}.child1}}"
}

PLAY RECAP ********************************************************************
127.0.0.1                  : ok=2    changed=0    unreachable=0    failed=0

Может ли кто-нибудь подсказать, как я могу достичь этого или любого альтернативного решения.


person Roopendra    schedule 07.04.2014    source источник


Ответы (1)


Как я это сделал

Измените group_vars / all, как показано ниже: -

data:
    parent1:
      child1: somevalue1
      child2: somevalue2

    parent2:
      child1: somevalue1
      child2: somevalue2

Изменение в playbook.yml: -

 - debug: msg={{ data[parent].child1 }}

Пожалуйста, поделитесь, если у вас есть лучшее решение :)

person Roopendra    schedule 08.04.2014