Сегодня я заметил, что Ansible не будет сливать переменные.
Например, когда у меня есть что-то вроде
---
lvm_roles:
postgresql:
size: '10g'
path: '/var/lib/postgresql'
А в другом месте у меня есть, например,
---
lvm_roles:
sonarqube:
size: '10g'
path: '/opt/sonarqube'
Ansible не объединит эти факты.Я не уверен в приоритете, но думаю, что победит первый.Без ошибок или предупреждений.ИМХО опасная функция для инструмента управления конфигурацией.
Существуют ли какие-либо переменные, которые Ansible может объединить?Списки и хэш не будут работать.Есть ли какой-то обходной путь для этого?
Это существенный недостаток Ansible.Потому что «факты» могут зависеть от того, что вы предоставляете.Невозможность объединить «факты» делает необходимым жесткий код и дублирование того, что вы не хотите настраивать.
Например, когда я создаю один файл с
lvm_roles:
postgresql:
size: '10g'
path: '{{ postgresql_home }}'
sonarqube:
size: '10g'
path: '{{ sonar_home }}'
Это не будет работать, потому что sonar_home
не определен на узле de postgresql.На узле sonarqube postgresql_home
не определено.Способность гибко использовать переменные сильно ухудшается, если объединение невозможно.