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.

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?

Tags:  

Answer

  1. Avatar for 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 plugins set_fact y lookup. Aquí tienes un ejemplo:

    - name: Push Helm Chart to ACR
      command: helm chart push {{ docker_registry }}/helm/{{ item.name }}:{{ item.version }}
      with_items:
        - { name: "service1", version: "latest" }
        - { name: "service2", version: "latest" }
        - { name: "service3", version: "latest" }
        - { name: "service1", version: "{{ lookup('vars', 'service1_version') }}" }
        - { name: "service2", version: "{{ lookup('vars', 'service2_version') }}" }
        - { name: "service3", version: "{{ lookup('vars', 'service3_version') }}" }
    

    En este ejemplo, definimos una lista de servicios con sus respectivas versiones. Luego, recorremos esta lista utilizando with_items y utilizamos item.name e item.version en el comando para publicar la versión especificada de cada servicio. También utilizamos lookup para obtener el valor de las versiones establecidas con set_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.

Comments are closed.