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.

Variable de lista de formato Ansible

Estoy trabajando en la configuración de automatización para un balanceador de carga F5 BigIP. Al crear el servidor virtual, tengo una variable que contiene los diversos perfiles que deseo incluir y también algunos que deben incluirse siempre.

Quiero usar esta variable:

yaml
 domains:
   - foo.example.com
   - bar.example.com
   - baz.example.com

En el siguiente módulo bajo perfiles. Ten en cuenta que no puedo hacer un bucle porque esto reemplazaría el valor cada vez. Quiero que todos los elementos de la lista de dominios se expandan en la ejecución única de esta tarea. He intentado usar un bucle Jinja, pero se detiene cuando intento ejecutarlo.

yaml
 - name: Configure virtual server
   f5networks.f5_modules.bigip_virtual_server:
     state: present
     partition: Common
     name: insite-ssl
     destination: 10.10.10.10
     port: 443
     pool: example-pool
     snat: Automap
     description: Testing VIP
     profiles: |
       {% for domain in domains %}
       - name: {{ domain }}
         context: client-side
       {% endfor %}
       - http-SSL-XForwarded
       - name: example.com_wildcard
         context: client-side
     provider: "{{ f5_conn }}"
   tags:
     - vip

¿Cuál es la forma correcta de solucionar esto?

Tags:  

Answer

  1. Avatar for davy.ai

    Para evitar usar un bucle que sustituiría el valor con cada iteración, puedes usar el filtro “join” en Jinja para combinar los perfiles de la lista de dominios con los perfiles adicionales que siempre deben incluirse.

    Aquí tienes una versión actualizada del módulo con este enfoque:

    - name: Configurar servidor virtual
      f5networks.f5_modules.bigip_virtual_server:
        state: present
        partition: Common
        name: insite-ssl
        destination: 10.10.10.10
        port: 443
        pool: example-pool
        snat: Automap
        description: Prueba VIP
        profiles: "{{ domains | map('regex_replace','^(.*)$','\\1.client-side') | join('\n') }}\nhttp-SSL-XForwarded\nexample.com_wildcard.client-side"
        provider: "{{ f5_conn }}"
      tags:
        - vip
    

    En este módulo actualizado, el parámetro “profiles” ahora usa el filtro de Jinja “map” junto con el filtro “regex_replace” para agregar “.client-side” a cada perfil en la lista de dominios, y luego utiliza “join” para combinar esta lista con los perfiles adicionales que siempre deben incluirse. Finalmente, “\n” se utiliza para agregar nuevas líneas para cada perfil.

    Este enfoque ampliará todos los elementos de la lista de la variable “domains” en una sola ejecución de la tarea.

Comments are closed.