0Pricing
Ansible Academy · Урок

defaults и vars: порядок переопределения

Проектируйте понятные интерфейсы переменных ролей

«defaults и vars: порядок переопределения» — бесплатный урок Ansible Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.

Две папки для переменных

Роль может определять переменные в двух местах: defaults/main.yml и vars/main.yml. Они выглядят похоже, но работают совершенно по-разному.

defaults имеют низкий приоритет

Значения в defaults/main.yml имеют самый низкий приоритет. Это мягкие рекомендации, которые почти всё остальное может переопределить.

# defaults/main.yml
http_port: 80
workers: 4

vars имеют высокий приоритет

Значения в vars/main.yml имеют высокий приоритет. Это жёсткие решения, на которых настаивает роль, и их трудно переопределить.

# vars/main.yml
config_path: /etc/myapp

defaults — это Ваш открытый интерфейс

Помещайте в defaults всё, что пользователь может захотеть настроить. Это означает: «меня можно свободно изменять». Так создаются удобные и повторно используемые роли.

vars — это внутренние константы

Оставляйте vars для значений, необходимых роли для работы и не предназначенных для изменения пользователем, например внутреннего пути или фиксированного имени пакета.

Легко переопределяйте значение defaults

Пользователь может переопределить default из group_vars, host_vars, плейбука или командной строки. Самое простое переопределение применяется немедленно.

roles:
  - role: web
    vars:
      http_port: 8080

Значение vars трудно переопределить

Ролевые vars имеют приоритет над group_vars, host_vars и переменными плейбука. Выше них стоят только extra-vars из командной строки, поэтому используйте vars экономно.

Extra Vars всегда имеют приоритет

Переменные, переданные с помощью -e в командной строке, имеют приоритет над всеми другими источниками, включая переменные роли. Это окончательное переопределение.

ansible-playbook site.yml -e http_port=9090

Порядок, который нужно запомнить

Запомните эту лестницу: defaults внизу, затем переменные инвентаря и плейбука, далее почти в самом верху переменные роли, а над всеми — extra-vars.

Совет по проектированию

Почти всегда отдавайте предпочтение defaults. Обращайтесь к vars только тогда, когда значение действительно должно оставаться неизменным. Гибкие роли радуют команды.

Документируйте defaults

Добавляйте комментарий к каждому значению в defaults/main.yml. Поскольку пользователи будут их настраивать, понятные пояснения превращают роль в самодокументируемую автоматизацию.

Быстрая проверка

Подумайте, в каком файле значение проще всего переопределить пользователю.

Итоги

Используйте defaults для настраиваемых значений, которые переопределяют пользователи, а vars — для неизменяемых внутренних констант. Extra-vars в CLI имеют приоритет над всем остальным. 🎚️

Часто задаваемые вопросы

Урок «defaults и vars: порядок переопределения» бесплатный?

Да — полный текст урока «defaults и vars: порядок переопределения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.

Чему я научусь в уроке «defaults и vars: порядок переопределения»?

Проектируйте понятные интерфейсы переменных ролей Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ansible Academy?

Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «defaults и vars: порядок переопределения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ansible Academy?

Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Зависимости ролей в meta/main.yml
  2. defaults и vars: порядок переопределения
  3. include_role и import_role во время выполнения
  4. allow_duplicates и идемпотентность ролей
← Назад к Ansible Academy