Skip to content

Autoplanning

En cualquier pull request nuevo o nuevo commit a un pull request existente, Atlantis intentará executar terraform plan en los directorios que considera que contienen proyectos de Terraform modificados.

El algoritmo que usa es el siguiente:

  1. Obtener la lista de todos los archivos modificados en el pull request
  2. Filtrar a aquellos que coincidan con la --autoplan-file-list configurada (por defecto incluye .tf, .tf.json, .tfvars, .tofu, .tofu.json, etc.)
  3. Obtener los directorios en los que están esos archivos
  4. Si la ruta del directorio no contiene modules/ entonces intentar ejecutar plan en ese directorio
  5. Si sí contiene modules/, mirar el directorio un nivel por encima de modules/. Si contiene un archivo indicador de proyecto soportado (*.tf, *.tf.json, *.tofu, *.tofu.json, o terragrunt.hcl) ejecutar plan en ese directorio, de lo contrario ignorar el cambio (ver abajo para las excepciones).

Ejemplo

Dada la estructura de directorios:

plain
.
├── modules
│   └── module1
│       └── main.tf
└── project1
    ├── main.tf
    └── modules
        └── module1
            └── main.tf
  • Si se modificara project1/main.tf, ejecutaríamos plan en project1
  • Si se modificara modules/module1/main.tf, no ejecutaríamos automáticamente plan porque no podríamos determinar la ubicación del proyecto de Terraform
    • Podrías usar un archivo atlantis.yaml para especificar qué proyectos hacer plan cuando este módulo cambie
    • Podrías habilitar module autoplanning, que indexa proyectos según sus dependencias de módulos locales.
    • O podrías hacer plan manualmente con atlantis plan -d <dir>
  • Si se modificara project1/modules/module1/main.tf, miraríamos un nivel por encima de project1/modules hacia project1/, veríamos que había un archivo main.tf y por lo tanto ejecutaríamos plan en project1/

Notas específicas de Bitbucket

Bitbucket no tiene un webhook que se active solo cuando hay un PR nuevo o un commit nuevo. Para solucionar esto, almacenamos en caché el último commit para ver si ha cambiado. Si la caché se vacía, Atlantis pensará que tu commit es nuevo y podrías ver planes adicionales. Este escenario puede ocurrir si:

  • Atlantis se reinicia
  • Estás ejecutando múltiples instancias de Atlantis detrás de un balanceador de carga

Personalización

Si deseas personalizar cómo Atlantis determina en qué directorio ejecutar o deshabilitarlo por completo, necesitas crear un archivo atlantis.yaml. Consulta

Copyright Atlantis a Series of LF Projects, LLC. Para los términos de uso del sitio web, la política de marcas y otras políticas del proyecto, consulta LF Projects, LLC Policies.