0Pricing
DevOps Bootcamp · Урок

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

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

«Переменные и выражения в Jinja2» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 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' }}

Три вида фигурных скобок

Запомните три варианта: {{ }} выводит значение, {% %} выполняет логику, а {# #} содержит комментарий. У каждого своё назначение.

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

Вы хотите, чтобы шаблон вывел значение, хранящееся в переменной. Какой разделитель его выводит?

Итоги

Теперь Вы умеете читать в шаблонах переменные, факты, ключи словарей и элементы списков, выполнять вычисления, объединять строки и добавлять комментарии. Выражения оживляют конфигурацию. ✨

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

Урок «Переменные и выражения в Jinja2» бесплатный?

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

Чему я научусь в уроке «Переменные и выражения в Jinja2»?

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

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

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

Сколько времени занимает урок «Переменные и выражения в Jinja2»?

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

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

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

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

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