es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í

Tags:  , ,

Answer

  1. Avatar for 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 comando curl, debes modificar la sintaxis de la siguiente manera:

    - hosts: localhost
      become: yes
      roles:
        - my.nifi
      vars:
        nifi_properties:
          # Propiedades de HTTPS
          nifi.web.https.host: "{{ lookup('pipe', 'curl 169.254.169.254/2009-04-04/meta-data/public-ipv4') }}"
          nifi.web.https.port: 8443
          nifi.web.https.network.interface.default: eth0
    

    Aquí, la función lookup se utiliza para ejecutar el comando curl y recuperar su salida como una cadena, que luego se utiliza para establecer la variable nifi.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.

Comments are closed.