Переменные и выражения в Jinja2
Подставляйте значения в шаблон
«Переменные и выражения в Jinja2» — бесплатный урок Ansible Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.
Переменные внутри шаблонов
В шаблоне доступны все переменные, доступные Вашему плейбуку. Просто заключите имя переменной в {{ }}, чтобы вывести её значение. 🌟
server_name {{ domain }};
worker_processes {{ cpu_count }};Доступ к ключам словаря
Для переменной-словаря получить значение ключа можно с помощью точечной или скобочной записи. И db.host, и db['host'] возвращают одно и то же значение.
host = {{ db.host }}
port = {{ db['port'] }}Индексация списка
Выберите элемент списка по его позиции, начиная отсчёт с нуля. {{ servers[0] }} возвращает первый элемент.
primary = {{ servers[0] }}
backup = {{ servers[1] }}Использование фактов Ansible
Собранные факты — это обычные переменные, поэтому шаблоны тоже могут их читать. ansible_hostname подставляет в файл имя самого узла.
# This host is {{ ansible_hostname }}
bind {{ ansible_default_ipv4.address }}Математика в выражениях
Jinja2 выполняет арифметические операции внутри фигурных скобок. Вы можете вычислить значение, а не задавать его вручную, например удвоить количество рабочих процессов.
max_workers {{ cpu_count * 2 }}Объединение строк
Объединяйте строки оператором ~. Он соединяет части независимо от их типа, в отличие от оператора +, предназначенного для чисел.
url = http://{{ host ~ ':' ~ port }}Выражения сравнения
Выражения могут также выполнять проверки. Сравнения вроде cpu_count > 4 возвращают true или false для последующего использования в логике.
{{ http_port == 443 }}
{{ replicas >= 3 }}Комментарии в шаблонах
Заключайте свои заметки в {# ... #}. Jinja2 полностью удаляет их, поэтому в обработанном файле они не появляются.
{# This file is managed by Ansible #}
listen {{ http_port }};Неопределённые переменные вызывают ошибку
По умолчанию обращение к несуществующей переменной останавливает сценарий с ошибкой неопределённая переменная. Jinja2 намеренно работает строго.
Внимательно заключайте строки в кавычки
Литеральная строка внутри выражения должна быть заключена в кавычки. Без них Jinja2 воспринимает prod как имя переменной, а не как текст prod.
{{ 'production' if env == 'prod' else 'staging' }}Три вида фигурных скобок
Запомните три варианта: {{ }} выводит значение, {% %} выполняет логику, а {# #} содержит комментарий. У каждого своё назначение.
Быстрая проверка
Вы хотите, чтобы шаблон вывел значение, хранящееся в переменной. Какой разделитель его выводит?
Итоги
Теперь Вы умеете читать в шаблонах переменные, факты, ключи словарей и элементы списков, выполнять вычисления, объединять строки и добавлять комментарии. Выражения оживляют конфигурацию. ✨
Изучай YAML с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Переменные и выражения в Jinja2» бесплатный?
Да — полный текст урока «Переменные и выражения в Jinja2» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.
Чему я научусь в уроке «Переменные и выражения в Jinja2»?
Подставляйте значения в шаблон Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ansible Academy?
Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Переменные и выражения в Jinja2»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ansible Academy?
Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Модуль template и файлы .j2
- Переменные и выражения в Jinja2
- Циклы и блоки if в шаблонах
- Фильтры: default, join и upper