Oto moja group_vars/all file:dostępu zagnieżdżonych zmiennych zmiennych w ansibl
app_env: staging
staging:
app_a:
db_host: localhost
app_b:
db_host: localhost
production:
app_a:
db_host: app_a-db.example.net
app_b:
db_host: app_b-db.example.com
Jeśli app_env środowisko musi być produkcję, ja to poprzez nadpisanie zmiennych zapasów. W ten sposób wszystkie wdrożenia są przeprowadzane na etapie wdrażania, chyba że wyraźnie je udostępnisz.
Tak, gdy chcę wydrukować zmiennej w playbook, mogę zrobić
---
- debug: var={{app_env}}.app_a.db_host
To działa!
Ale w jaki sposób mogę uzyskać dostęp do zmiennej w innym module, tzn. Lineinfile?
kilka przykładów, które nie wyszło:
- lineinfile: dest=/etc/profile line='export APP_A_DB_HOST="{{ app_env.app_a.db_host }}"'
- lineinfile: dest=/etc/profile line='export APP_A_DB_HOST="{{ app_env[app_a][db_host] }}"'
- lineinfile: dest=/etc/profile line='export APP_A_DB_HOST="{{ {{app_env}}.app_a.db_host }}"'
roztwory robocze będzie z wykorzystaniem modułu set_fact (podwójne linie kodu, nie bardzo inteligentny) lub tym różne pliki zmienne, w zależności od app_env.
Ale ja naprawdę chciałbym wiedzieć, czy tam oznaczenie dostęp do zagnieżdżonych zmiennych zmiennych;)