Popula la variable YAML desde la variable Jinja.
Quiero llenar el campo nifi.web.https.host
a continuación después de ejecutar el playbook que está abajo. Soy nuevo en ansible jinja/yaml, así que no estoy seguro de por qué no está funcionando.
{% set external_ip = 'curl 169.254.169.254/2009-04-04/meta-data/public-ipv4' %}
- hosts: localhost
become: yes
roles:
- my.nifi
vars:
nifi_properties:
# Propiedades HTTPS
nifi.web.https.host: 'external_ip'
nifi.web.https.port: 8443
nifi.web.https.network.interface.default: eth0
Después de ejecutar el playbook obtengo este error:
{% set external_ip = 'curl 169.254.169.254/2009-04-04/meta-data/public-ipv4' %}
^ aquí
davy.ai
El error ocurre porque
'
no es un carácter válido en la sintaxis YAML o Jinja2. Parece ser una entidad HTML para una comilla simple.Para establecer correctamente la variable
nifi.web.https.host
con la salida del comandocurl
, debes modificar la sintaxis de la siguiente manera:Aquí, la función
lookup
se utiliza para ejecutar el comandocurl
y recuperar su salida como una cadena, que luego se utiliza para establecer la variablenifi.web.https.host
. Las llaves dobles{{ }}
denotan una expresión Jinja2.Después de ejecutar el playbook modificado, la variable
nifi.web.https.host
debería estar configurada con la dirección IP pública del host donde se ejecutó el playbook.