Как указать переменные по умолчанию для импортированных ролей Ansible Galaxy?
При написании пользовательской роли для сборника пьес Ansible можно указать значения по умолчанию. Я хотел бы сделать то же самое при использовании роли из Ansible Galaxy ("менеджер пакетов" Ansible).
Например, при использовании популярной роли redis я хотел бы иметь возможность указать значение по умолчанию redis_version
, так что любой, импортирующий эту роль, получит то же самое.
Без централизации я бы поместил версию redis в раздел переменных в каждой книге при использовании роли. Это не идеально. Другие способы, которые я могу придумать:
- Создайте новую роль, поместите туда переменную по умолчанию, а затем сделайте роль Galaxy зависимой. (Не уверен, что переменные передаются вниз.)
- Поместите значение по умолчанию в
ansible.cfg[defaults]
,
Какова лучшая практика?
1 ответ
Выясните, где определить переменную, и не усложняйте ее. Приоритет переменной: куда я должен поместить переменную?
Например, group_vars рядом с playbook. Или из динамического инвентаря. Много места для размещения переменных тоже.
Если вы хотите, чтобы пользователю нужно было только импортировать роль, без переменных в своей игре или инвентаре, подумайте о разветвлении роли и изменении значения по умолчанию. Теперь вы должны поддерживать это, что является недостатком. Я бы предпочел, чтобы мои переменные были в игре, это всего лишь несколько строк.