Versiones de Terraform
Puede personalizar qué versión de Terraform usa Atlantis por defecto configurando la flag --default-tf-version (p. ej. --default-tf-version=v1.3.7).
Mediante atlantis.yaml
Si desea usar una versión diferente de la predeterminada para un repo o proyecto específico, necesita crear un archivo atlantis.yaml y configurar la clave terraform_version:
version: 3
projects:
- dir: .
terraform_version: v1.1.5Vea casos de uso de atlantis.yaml para más detalles.
Mediante terraform config
Alternativamente, se puede usar la clave required_version del bloque de configuración de terraform para especificar una versión exacta (x.y.z o = x.y.z), o a partir de atlantis v0.21.0, una restricción de versión de comparación o pesimista:
Exactamente la versión 1.2.9
terraform {
required_version = "= 1.2.9"
}Cualquier versión patch/tiny de la versión menor 1.2 (1.2.z)
terraform {
required_version = "~> 1.2.0"
}Cualquier versión menor de la versión mayor 1 (1.y.z)
terraform {
required_version = "~> 1.2"
}Cualquier versión que sea al menos 1.2.0
terraform {
required_version = ">= 1.2.0"
}Vea Terraform required_version como referencia.
NOTE
Atlantis descargará automáticamente la versión más reciente que cumpla la restricción especificada. Un terraform_version especificado en el archivo atlantis.yaml tiene precedencia sobre tanto la flag --default-tf-version como required_version en el hcl de terraform. Cuando un proyecto configura terraform_distribution, Atlantis resuelve la restricción required_version contra esa distribución. Por ejemplo, un proyecto OpenTofu se resuelve a una versión de OpenTofu en lugar de una versión de Terraform.
Soporte de archivos .tofu de OpenTofu
Cuando la distribución efectiva es OpenTofu, Atlantis lee required_version de los archivos .tofu e .tofu.json además de .tf e .tf.json. La distribución efectiva es OpenTofu cuando ocurre cualquiera de estos casos:
- Un proyecto configura
terraform_distribution: opentofuenatlantis.yaml - El valor predeterminado del servidor es
--default-tf-distribution=opentofuy el proyecto no lo sobrescribe
Si un proyecto configura explícitamente terraform_distribution: terraform, Atlantis usa la ruta de detección de versión de Terraform (solo .tf / .tf.json) incluso si el valor predeterminado del servidor es OpenTofu.
Se respeta la precedencia de archivos de OpenTofu: un archivo .tofu sobrescribe un archivo .tf con el mismo nombre base, y .tofu.json sobrescribe un archivo .tf.json con el mismo nombre base. Los archivos con diferentes nombres base contribuyen ambos con restricciones de forma independiente.
La distribución Terraform no se ve afectada y continúa leyendo solo los archivos .tf / .tf.json.
Known limitation
La indexación de dependencias de autoplanning de módulos (--autoplan-modules) todavía depende de terraform-config-inspect y no entiende completamente .tofu / .tofu.json:
- Los bloques source de módulo definidos solo en archivos
.tofu/.tofu.jsonno se indexan. Los proyectos que usan estos archivos para bloquesmodule {}no serán planificados cuando los módulos compartidos cambien. - Los directorios de módulos compartidos que contienen solo archivos
.tofu/.tofu.jsonpueden no ser reconocidos como módulos por el índice de dependencias.
El autoplanning directo por cambio de archivo (sin --autoplan-modules) es totalmente compatible para proyectos .tofu. Como solución alternativa para dependencias de módulos, incluya rutas de módulos compartidos en patrones autoplan.when_modified explícitos, o mantenga las declaraciones module source en archivos .tf hasta que se implemente la indexación completa de módulos .tofu.
La detección de workspace de Terraform Cloud (cloud { workspaces { ... } }) admite archivos .tf, .tf.json, .tofu e .tofu.json para proyectos autodiscovered. .tofu y .tofu.json solo se escanean cuando la distribución predeterminada del servidor (--default-tf-distribution) es OpenTofu. La precedencia de mismo nombre base se aplica en modo OpenTofu: .tofu sobrescribe main.tf, .tofu.json sobrescribe main.tf.json. Los proyectos con valor predeterminado de servidor Terraform leen .tf e .tf.json pero ignoran .tofu / .tofu.json.
Para proyectos configurados explícitamente en atlantis.yaml, configure el campo workspace: directamente — el escaneo HCL de workspace no se usa para proyectos configurados independientemente de la distribución.
NOTE
La imagen docker latest de Atlantis tiende a tener versiones recientes de Terraform, pero puede haber una demora a medida que se lanzan nuevas versiones. La versión más alta de Terraform permitida en su código es la versión especificada por DEFAULT_TERRAFORM_VERSION en la imagen que su servidor está ejecutando.