I sh для создания файла переменной, который должен иметь следующую структуру.
There be many regions
|---> Each region has many Countries
|---> Each Country has many IPs
|---> Each IP has many disks
Ниже моя книга игр, которая загружает и печатает переменные
---
- name: Demonstrating variables in Jinja2 Loops
hosts: localhost
- name: Load variable files
include_vars:
file="{{ playbook_dir }}/vars/vars.yml"
- debug:
msg: "COUNTRY {{ item.countries | join('') }} has IP ADDRESS {{ item.1 | join('') }} which has DISKs {{ item.1.disks | join('') }}"
with_subelements:
- "{{ regions }}"
- countries.ALL_IPS
I wi sh для печати, как показано ниже для всех записей в vars.yml
COUNTRY CORE DUBAI has IP ADDRESS 10.0.0.1 which has DISKS /fins and /tmp
COUNTRY CORE DUBAI has IP ADDRESS 10.0.0.4 has DISKS /was
COUNTRY CORE SINGAPORE has IP ADDRESS 10.0.1.5 which has DISKS /fins and /tmp
Ниже мой vars / vars.yml, который разработан и прекрасно работает с моим шаблоном jinja2, где я могу получить все нужные мне значения из vars.yml
---
regions:
- name: PROD
countries:
- CORE DUBAI:
name: CORE DUBAI
ALL_IPS:
- 10.0.0.1:
name: 10.0.0.1
disks:
- /fins
- /tmp
- 10.0.0.4:
name: 10.0.0.4
disks:
- /was
- CORE SINGAPORE:
name: CORE SINGAPORE
ALL_IPS:
- 10.0.1.5:
name: 10.0.1.5
disks:
- /fins
- /tmp
Я получаю приведенную ниже ошибку, пока Запустив мой playbook:
TASK [debug] ************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "the key countries should point to a dictionary, got '[{u'ALL_IPS': [{u'disks': [u'/fins', u'/tmp'], u'10.0.0.1': None, u'name': u'10.0.0.1'}, {u'10.0.0.4': None, u'disks': [u'/was'], u'name': u'10.0.0.4'}], u'name': u'fins CORE DUBAI', u'fins CORE DUBAI': None}, {u'ALL_IPS': [{u'disks': [u'/fins', u'/tmp'], u'name': u'10.0.1.5', u'10.0.1.5': None}, {u'10.0.0.4': None, u'disks': [u'/was'], u'name': u'10.0.0.4'}], u'fins CORE SINGAPORE': None, u'name': u'fins CORE SINGAPORE'}]'"}
PLAY RECAP **************************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Подскажите, пожалуйста, как мне получить желаемый результат?