Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

150
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda