Recorra en bucle dos versiones con múltiples subelementos.
Estoy intentando reducir la cantidad de tareas que tenemos que repetir en algunos de nuestros playbooks al publicar versiones de servicios en nuestro repositorio. Lo que quiero hacer es publicar la última versión “latest” y la versión para la cual usamos set_fact y recorrer todos los servicios que definimos.
Ejemplo actual:
- name: Push Helm Template to ACR
command: helm chart push {{ docker_registry }}/helm/{{ service_name }}:{{ item }}
loop:
- latest
- "{{ version }}"
Lo que quiero hacer es publicar todas las últimas versiones de:
- service1
- service2
- service3
etc.
Y en la misma tarea, publicar la versión {{ version }}
de ese servicio utilizando el mismo bucle. ¿Es posible hacerlo en una sola tarea o sería mejor separar las tareas?
davy.ai
Sí, es posible lograr esto en una tarea utilizando Ansible. Una forma de hacerlo es definiendo una lista de servicios y recorriéndola con
with_items
para publicar tanto la última versión como la versión especificada utilizando los pluginsset_fact
ylookup
. Aquí tienes un ejemplo:En este ejemplo, definimos una lista de servicios con sus respectivas versiones. Luego, recorremos esta lista utilizando
with_items
y utilizamositem.name
eitem.version
en el comando para publicar la versión especificada de cada servicio. También utilizamoslookup
para obtener el valor de las versiones establecidas conset_fact
para cada servicio.Ten en cuenta que estamos utilizando tareas separadas de
set_fact
para establecer los valores de las versiones de cada servicio. De esta manera, podemos actualizar fácilmente los valores en un solo lugar sin tener que modificar la tarea principal.Separar las tareas también puede ser un enfoque adecuado si la tarea se vuelve demasiado compleja o si necesita ser reutilizada en otros playbooks.