(Относится к обратным вызовам или перехватам, а также к серии заданий многократного использования в роли Ansible )
Есть ли лучший способ добавить в список или добавить ключ к словарю в Ansible, чем (ab) с помощью выражения шаблона jina2?
Я знаю, что вы можете сделать что-то вроде:
- name: this is a hack
shell: echo "{% originalvar.append('x') %}New value of originalvar is {{originalvar}}"
но неужели нет мета-задачи или помощника для этого?
Он выглядит хрупким, кажется недокументированным и опирается на множество предположений о том, как переменные работают в Ansible.
Мой вариант использования - это несколько ролей (расширения сервера базы данных), каждая из которых должна предоставить некоторую конфигурацию базовой роли (серверу базы данных). Это не так просто, как добавить строку в файл конфигурации сервера БД; каждое изменение применяется к одной и той же строке , например, к расширениям, bdr
и pg_stat_statements
оба должны появляться в целевой строке:
shared_preload_libaries = 'bdr, pg_stat_statements'
Можно ли сделать это в Ansible, просто обработав файл конфигурации несколько раз (один раз для каждого расширения) с помощью регулярного выражения, которое извлекает текущее значение, анализирует его и затем переписывает? Если так, как вы делаете это идемпотентным через несколько прогонов?
Что, если конфигурация сложнее, чем эта, для анализа, и она не так проста, как добавление другого значения через запятую? Подумайте, файлы конфигурации XML.