Рейтинг:1

Вставка переменной Jinja в строку в кавычках

флаг us

Я создаю контейнер Podman, который запускает Samba Active Directory с поддержкой Bind9 и Freeradius, используя Ansible, и столкнулся с небольшой проблемой.

Samba отлично работает с DLZ_BIND в качестве серверной части в моем контейнере, но мне нужно интегрировать Freeradius в контейнер, чтобы я мог поддерживать вход через VPN.

Я пытаюсь создать шаблон следующей строки в /etc/freeradius/3.0/моды доступны/mschap:

ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 
  --request-nt-ключ 
  --username={mschap:имя-пользователя} 
  --domain={{ ad_info.netbios_domain }} 
  --challenge=%{%{mschap:Challenge}:-00} 
  --nt-response=%{%{mschap:NT-Response}:-00}"

Для упражнения можно считать, что значение {{ ad_info.netbios_domain }} является ПРИМЕР.

Это единственное место в файле, где я использую переменную Jinja.

Однако запуск ansible-playbook приводит к тому, что Ansible буквально взрывается, когда пытается создать шаблон файла.

Я предполагаю, что это потому, что переменная Jinja вставлена ​​​​в строку с кавычками? Потому что сценарий оболочки BASH, содержащий следующую строку, не взорвется в ansible:

SAMBA_ADMIN_PASSWORD="{{ ad_info.admin_password }}"

Итак, как правильно использовать Jinja, когда у вас есть строка в кавычках?

Редактировать

Я сделал шаблон, содержащий только указанную строку, и получил следующую ошибку от ansible:

не удалось: [myhost.example.com] (item=etc/freeradius/3.0/mods-available/mschap) => 
{
  "ansible_loop_var": "элемент", 
  «изменено»: ложь, «элемент»: 
  "etc/freeradius/3.0/моды доступны/mschap-jinja", 
  "msg": "AnsibleError: ошибка шаблона при создании строки шаблона: ожидается имя тега. 

  Строка: ntlm_auth = \"/usr/bin/ntlm_auth 
    --allow-mschapv2 
    --request-nt-ключ 
    --username={mschap:имя-пользователя} 
    --domain={{ ad_info.netbios_domain }} 
    --challenge=%{%{mschap:Challenge}:-00} 
    --nt-response=%{%{mschap:NT-Response}:-00}\"
"}
Рейтинг:2
флаг br

Комбинация {% открывает Заявление Джиндзя. Чтобы избежать этой интерпретации, поместите фигурную скобку в переменную, например.

    БР: '{{ "{" }}'

и использовать его в шаблоне

оболочка> кошка mschap.j2
ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 
  --request-nt-ключ 
  --username={mschap:имя-пользователя} 
  --domain={{ ad_info.netbios_domain }} 
  --challenge=%{{ BR }}%{mschap:Challenge}:-00} 
  --nt-response=%{{ BR }}%{mschap:NT-Response}:-00}"

Задача ниже должна выполнить эту работу

    - шаблон:
        источник: mschap.j2
        пункт назначения: мсхап
      вары:
        объявление_информация:
          netbios_domain: ПРИМЕР

дает

оболочка> кошка mschap
ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 
  --request-nt-ключ 
  --username={mschap:имя-пользователя} 
  --домен=ПРИМЕР 
  --challenge=%{%{mschap:Challenge}:-00} 
  --nt-response=%{%{mschap:NT-Response}:-00}"
флаг us
Спасибо. У меня было ощущение, что мне нужно экранировать по крайней мере некоторые из символов `%{`, потому что jinja также использует этот синтаксис для операторов. По крайней мере, у меня есть путь вперед отсюда. :-)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.