Источники переменных и их приоритет
Составьте первую карту источников переменных.
«Источники переменных и их приоритет» — бесплатный урок Ansible Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.
Так много источников
Одну и ту же переменную можно задать во многих местах: в inventory, vars play, файлах, CLI и не только. Так какое же значение на самом деле имеет приоритет? 🌟
Приоритет определяет результат
Ansible использует фиксированный порядок, называемый приоритетом переменных. Если имя задано дважды, источник с более высоким приоритетом переопределяет источник с более низким.
Значения по умолчанию роли имеют самый низкий приоритет
Значения в папке defaults роли находятся в самом низу. Предполагается, что их легко переопределить практически любым другим источником.
# roles/web/defaults/main.yml
http_port: 80Переменные inventory
Переменные, заданные в inventory, например в group_vars или host_vars, имеют более высокий приоритет, чем значения роли по умолчанию, но более низкий, чем переменные уровня play.
# group_vars/web.yml
http_port: 8080Переменные play имеют более высокий приоритет
Переменные под ключом vars play имеют приоритет над значениями inventory. Определите значение здесь — и оно переопределит всё, что находится в group_vars.
- hosts: web
vars:
http_port: 9090Переменные задачи действуют более узко
Вы можете прикрепить vars к одной задаче. Это значение действует только там и имеет более высокий приоритет, чем более общие переменные play.
- debug:
var: http_port
vars:
http_port: 1234Зарегистрированные значения и set_fact
Значения, полученные с помощью register или заданные во время выполнения с помощью set_fact, занимают высокое место в порядке приоритетов — сразу под дополнительными переменными.
- set_fact:
http_port: 7000Дополнительные переменные имеют высший приоритет
Дополнительные переменные из командной строки имеют приоритет над всем остальным. Всё, что Вы передадите с помощью -e, становится окончательным значением для этого запуска.
ansible-playbook site.yml -e http_port=443Внутри одного уровня действует последнее определение
Если два источника находятся на одном уровне, применяется тот, который был загружен последним. Сначала учитывается приоритет, а порядок загрузки разрешает равенство.
Сохраняйте простоту
Вам редко нужно запоминать всю таблицу. Размещайте разумные значения в defaults, осознанно переопределяйте их и не задавайте одно и то же имя повсюду.
Проверьте полученное значение
Не уверены, какое значение победило? Выведите его с помощью debug, чтобы увидеть итоговый результат, прежде чем доверять ему в рабочей среде.
- debug:
var: http_portБыстрая проверка
Какой источник переменной имеет наивысший приоритет?
Повторение
Вы разобрали лестницу приоритетов: defaults имеют самый низкий приоритет, затем идут inventory, переменные play и задачи, затем set_fact, а на вершине находятся дополнительные переменные. ✨
Часто задаваемые вопросы
Урок «Источники переменных и их приоритет» бесплатный?
Да — полный текст урока «Источники переменных и их приоритет» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.
Чему я научусь в уроке «Источники переменных и их приоритет»?
Составьте первую карту источников переменных. Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ansible Academy?
Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Источники переменных и их приоритет»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ansible Academy?
Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Определение и использование vars в плейбуке
- Синтаксис подстановки {{ }}
- Дополнительные переменные в командной строке
- Источники переменных и их приоритет