Ansible Academy · Урок

Дополнительные переменные в командной строке

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

Урок 3 из 413 шагов

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

Значения во время выполнения

Иногда значение нужно выбрать при запуске плей, а не зашивать в файл. Для этого предназначены дополнительные переменные. 🌟

Флаг -e

Передайте дополнительные переменные с помощью флага -e (или --extra-vars) команды ansible-playbook. Каждая из них становится переменной на время всего запуска.

ansible-playbook site.yml -e "env=prod"

Несколько пар key=value

Разделяйте несколько значений пробелами внутри одной строки в кавычках. Ansible разбирает каждую пару key=value и превращает её в переменную.

ansible-playbook site.yml -e "env=prod port=443"

Повторное использование -e

Можно также передать -e несколько раз. Каждое вхождение добавляет собственную переменную, что помогает сохранять длинные команды читаемыми.

ansible-playbook site.yml -e env=prod -e port=443

JSON для сложных типов

Запись ключ=значение превращает всё в строки. Чтобы передавать числа, списки или словари, используйте вместо этого JSON внутри дополнительных переменных.

ansible-playbook site.yml -e '{"port": 443}'

Загрузка дополнительных переменных из файла

Добавьте @ перед значением, чтобы прочитать переменные из файла YAML или JSON. Это особенно удобно для большого набора переопределений.

ansible-playbook site.yml -e @overrides.yml

Дополнительные переменные имеют приоритет

Дополнительная переменная имеет приоритет почти над любым другим источником. Если env задана в vars и в CLI, используется значение из командной строки.

Безопасное значение по умолчанию для переопределения

Сочетайте дополнительные переменные с фильтром default, чтобы play продолжал работать, даже если переопределение не задано.

name: "{{ env | default('dev') }}"

Удобно для окружений

Один и тот же playbook можно направить в dev, staging или prod, просто изменив одну дополнительную переменную при запуске. Один файл — множество целей.

ansible-playbook deploy.yml -e env=staging

Переключение поведения с помощью флагов

Дополнительные переменные удобно использовать как переключатели вкл./выкл. Объедините одну из них с условием when, чтобы включить или пропустить задачу.

when: run_migrations | default(false)

Осторожно используйте кавычки при наличии пробелов

Если значение содержит пробелы, заключите всю пару в кавычки, чтобы оболочка не разделила её. Следите за кавычками оболочки.

ansible-playbook s.yml -e "motd=Hello there"

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

Вы задали port в vars и также передали -e port=443. Какое значение имеет приоритет?

Повторение

Теперь Вы умеете переопределять значения при запуске с помощью -e, передавать JSON или @files и учитывать, что дополнительные переменные имеют приоритет над другими источниками. ✨

Можно начать бесплатно

Изучай YAML с ИИ-репетитором — бесплатно

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

Курсы
30
Уроки
120

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

Урок «Дополнительные переменные в командной строке» бесплатный?

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

Чему я научусь в уроке «Дополнительные переменные в командной строке»?

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

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

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

Сколько времени занимает урок «Дополнительные переменные в командной строке»?

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

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

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

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

  1. Определение и использование vars в плейбуке
  2. Синтаксис подстановки {{ }}
  3. Дополнительные переменные в командной строке
  4. Источники переменных и их приоритет
← Назад к Ansible Academy