Вот мой group_vars/все Файл:доступа вложенных переменные переменных в анзибле
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
Если app_env среды должна быть производство, я переписать это с помощью инвентаризации переменных. Таким образом, все развертывания выполняются, если вы не сделаете их производство явно.
Так что, когда я хочу, чтобы напечатать переменную в PlayBook, я могу сделать
---
- debug: var={{app_env}}.app_a.db_host
Это работает!
Но как я могу получить доступ к переменной в другом модуле, то есть в файле lineinfile?
Некоторые примеры, которые не работали из:
- 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 }}"'
Рабочие растворы будут с помощью модуля set_fact (двойные линии кода, не очень умный) или включая различные переменные файлы, в зависимости от app_env.
Но я действительно хотел бы знать, если Theres нотация для доступа к вложенным переменным переменных;)