Ansible Academy · Урок

Переменные и выражения в Jinja2

Подставляйте значения в шаблон

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

«Переменные и выражения в 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 — локальная установка не требуется.

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

  1. Модуль template и файлы .j2
  2. Переменные и выражения в Jinja2
  3. Циклы и блоки if в шаблонах
  4. Фильтры: default, join и upper
← Назад к Ansible Academy