Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
ansible include con segmentos de matriz

En Ansible 2.2, quiero recorrer una gran lista de archivos leídos de S3.

Aquí está mi role/tasks/main.yml

  - nombre: Simular lectura de variables desde S3
    establecer_hecho:
      lista_de_archivos_a_importar: [
        "a.tar.gz",
        "b.tar.gz",
        "c.tar.gz",
        "d.tar.gz",
        "e.tar.gz",
        "f.tar.gz",
        "g.tar.gz",
        "h.tar.gz",
        ...
        "zz.tar.gz"
      ]

  - nombre: Procesar cada archivo de S3
    incluir: submodule.yml
    with_items: lista_de_archivos_a_importar

Aquí está role/tasks/submodule.yml

---
  - nombre: Restaurar TABLA {{ elemento }}
    depuración: var={{ elemento }}

Esto falla porque hay demasiados archivos.

Descubrí que puedo dividir la matriz y enviar secciones a la vez:

  - nombre: Procesar cada archivo de S3
    incluir: submodule.yml
    with_items: "{{ lista_de_archivos_a_importar[0:5] }}"

  - nombre: Procesar cada archivo de S3
    incluir: submodule.yml
    with_items: "{{ lista_de_archivos_a_importar[5:10] }}"

  - nombre: Procesar cada archivo de S3
    incluir: submodule.yml
    with_items: "{{ lista_de_archivos_a_importar[10:15] }}"

  - nombre: Procesar cada archivo de S3
    incluir: submodule.yml
    with_items: "{{ lista_de_archivos_a_importar[15:20] }}"

En lugar de codificar todos estos pequeños bloques, quería probar algo como

  - nombre: Procesar cada archivo de S3
    incluir: submodule.yml
    with_items: "{{ lista_de_archivos_a_importar[{{inicio}}:{{fin}}] }}"

Pero no podemos obtener nombres de variables definidas por variables.

¿Cómo puedo procesar una gran lista de elementos en Ansible 2.2?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Terminé resolviéndolo con un script de shell, llamando repetidamente al libro de jugadas con algunos --extra-vars para especificar qué archivos procesar.

Esto solo funciona porque la lista de archivos en S3 tiene nombres de archivo similares. Básicamente, recorre los nombres de archivo y procesa cada uno a la vez.

#!/usr/bin/env bash

# devuelve 0 (verdadero) si la combinación año/mes es válida
válido() {
   año=$1
   millón = $ 2
   # no ejecutar en meses posteriores a este mes
   if [ "$año" -eq "2017" -a "$mn" -gt "$(fecha +%m)" ]
   después
     volver 1
   fi

   volver 0
}

# Por cada año desde 2002 hasta este año
para el año en `seq 2002 $(fecha +%Y)`
hacer
   # por cada mes con ceros, 01-12
   por mes en `seq -f "%02g" 01 12`
   hacer
      # para cada tipo de artículo en el inventario
      para objeto en widgets doodads
      hacer
          si es válido $año $mes;
          después
             ansible-playbook playbook_name.yml --extra-vars "objeto=$objeto año=$año mes=$mes"
          más
             echo omitiendo combo no válido $objeto $año $mes
          fi
      hecho
   hecho
hecho
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda