Как указать переменные по умолчанию для импортированных ролей Ansible Galaxy?

При написании пользовательской роли для сборника пьес Ansible можно указать значения по умолчанию. Я хотел бы сделать то же самое при использовании роли из Ansible Galaxy ("менеджер пакетов" Ansible).

Например, при использовании популярной роли redis я хотел бы иметь возможность указать значение по умолчанию redis_version, так что любой, импортирующий эту роль, получит то же самое.

Без централизации я бы поместил версию redis в раздел переменных в каждой книге при использовании роли. Это не идеально. Другие способы, которые я могу придумать:

  • Создайте новую роль, поместите туда переменную по умолчанию, а затем сделайте роль Galaxy зависимой. (Не уверен, что переменные передаются вниз.)
  • Поместите значение по умолчанию в ansible.cfg[defaults],

Какова лучшая практика?

1 ответ

Выясните, где определить переменную, и не усложняйте ее. Приоритет переменной: куда я должен поместить переменную?

Например, group_vars рядом с playbook. Или из динамического инвентаря. Много места для размещения переменных тоже.

Если вы хотите, чтобы пользователю нужно было только импортировать роль, без переменных в своей игре или инвентаре, подумайте о разветвлении роли и изменении значения по умолчанию. Теперь вы должны поддерживать это, что является недостатком. Я бы предпочел, чтобы мои переменные были в игре, это всего лишь несколько строк.

Другие вопросы по тегам