Estou construindo um contêiner Podman que executa o Samba Active Directory com suporte a Bind9 e Freeradius usando o Ansible e encontrei um problema.
O Samba funciona bem com DLZ_BIND como backend no meu contêiner, mas preciso integrar o Freeradius ao contêiner, para que eu possa dar suporte a logins via VPN.
Estou tentando modelar a seguinte linha em /etc/freeradius/3.0/mods-available/mschap
:
ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2
--request-nt-key
--username={mschap:User-Name}
--domain={{ ad_info.netbios_domain }}
--challenge=%{%{mschap:Challenge}:-00}
--nt-response=%{%{mschap:NT-Response}:-00}"
Para o exercício, você pode assumir que o valor de {{ ad_info.netbios_domain }}
é EXAMPLE
.
É o único lugar no arquivo onde eu uso uma variável Jinja.
No entanto, a execução do ansible-playbook faz com que o Ansible basicamente exploda na minha cara, quando tenta modelar o arquivo.
Presumo que seja porque a variável Jinja é inserida dentro de uma string qouted? Porque um script de shell BASH contendo a seguinte linha não explodirá no ansible:
SAMBA_ADMIN_PASSWORD="{{ ad_info.admin_password }}"
Então, qual é a maneira certa de usar Jinja, quando você tem uma string entre aspas?
Editar
Fiz um template contendo apenas a linha em questão e obtive o seguinte erro do ansible:
failed: [myhost.example.com] (item=etc/freeradius/3.0/mods-available/mschap) =>
{
"ansible_loop_var": "item",
"changed": false, "item":
"etc/freeradius/3.0/mods-available/mschap-jinja",
"msg": "AnsibleError: template error while templating string: tag name expected.
String: ntlm_auth = \"/usr/bin/ntlm_auth
--allow-mschapv2
--request-nt-key
--username={mschap:User-Name}
--domain={{ ad_info.netbios_domain }}
--challenge=%{%{mschap:Challenge}:-00}
--nt-response=%{%{mschap:NT-Response}:-00}\"
"}
A combinação
{%
abre uma instrução Jinja . Para evitar essa interpretação, coloque a chave em uma variável, por exemploe use-o no modelo
A tarefa abaixo deve fazer o trabalho
dá