Интересно, есть ли стандартный / рекомендуемый способ изменить переменную роли в Ansible.
Как автор роли, вы профилируете набор значений по умолчанию для своей роли, и пользователь может свободно переопределять Эти.
Проблема возникает, когда по умолчанию это списки или словари, которые также могут быть большими. Вы не хотите заставлять потребителя копировать / вставлять их, поэтому вы хотите объединить их, позволяя потребителю добавлять дополнительные значения, возможно даже переопределить некоторые ключи для словарей.
Ansible по умолчанию не объединяется , и это хорошо. Я надеюсь, что никто не настолько безумен, чтобы попытаться изменить значение hash_behavior в своей конфигурации.
В дикой природе я вижу, что люди добавляют вторую переменную, например myrole_filelist_extend
, которая комбинируется во время выполнения с myrole_filelist
, который содержит значения по умолчанию.
Существует также другая сторона медали, где пользователь может захотеть удалить что-то из списка по умолчанию, сохранив остальные, и, возможно, избегая дублирования default, потому что он хочет извлечь выгоду из изменений значений по умолчанию, сделанных непосредственно внутри роли.
Мне кажется, что этот подход немного уродлив, поскольку он создает больше переменных, иногда дополнительные шаги set_fact для объединения двух и даже путаницы, когда некоторые люди Мисс, чтобы использовать правильный.
Есть ли более чистый способ сделать это?