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?
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:
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.