Actualización de atlantis.yaml
Actualización de v2 a v3
La versión de Atlantis v0.7.0 introdujo una nueva versión 3 de atlantis.yaml.
Si no estás usando pasos custom de custom run, entonces puedes actualizar de version: 2 a version: 3 sin ningún cambio.
NOTA: La versión 2 no está siendo deprecada y no hay necesidad de actualizar tu versión si no deseas hacerlo.
El único cambio de v2 a v3 es que estamos analizando los pasos custom de run de manera diferente.
# atlantis.yaml
workflows:
custom:
plan:
steps:
- run: my custom commandAnteriormente, usábamos una biblioteca que analizaba el paso custom antes de ejecutarlo. Ahora, simplemente ejecutamos el paso directamente. Esto solo afectará a tus pasos si estaban usando algún tipo de escape de shell. Por ejemplo, si tu paso era anteriormente:
# version: 2
- run: "printf \'print me\'"Ahora puedes escribir esto en la versión 3 como:
# version: 3
- run: "printf 'print me'"Actualización de V1 a V3
Si estás actualizando desde una versión antigua de Atlantis <=v0.3.10 (de antes del 4 de julio de 2018) necesitarás seguir los siguientes pasos.
Un solo atlantis.yaml
Si tenías múltiples archivos atlantis.yaml por directorio, entonces necesitarás consolidarlos en un solo archivo atlantis.yaml en la raíz del repo.
Por ejemplo, si tenías una estructura de directorios:
.
├── project1
│ └── atlantis.yaml
└── project2
└── atlantis.yamlEntonces tu nueva estructura se vería así:
.
├── atlantis.yaml
├── project1
└── project2Y tu atlantis.yaml se vería algo como:
version: 2
projects:
- dir: project1
terraform_version: my-version
workflow: project1-workflow
- dir: project2
terraform_version: my-version
workflow: project2-workflow
workflows:
project1-workflow:
...
project2-workflow:
...Hablaremos más sobre workflows abajo.
Versión de Terraform
La clave terraform_version pasó de ser una clave de nivel superior a ser por project, así que si antes tu atlantis.yaml estaba en el directorio mydir y se veía así:
terraform_version: 0.11.0Entonces tu nueva configuración sería:
version: 2
projects:
- dir: mydir
terraform_version: 0.11.0Workflows
Los workflows son la nueva forma de establecer todos los pre_*, post_* y extra_arguments.
Cada project puede tener un workflow custom mediante la clave workflow.
version: 2
projects:
- dir: .
workflow: myworkflowLos workflows se definen como una clave de nivel superior:
version: 2
projects:
...
workflows:
myworkflow:
...Para empezar, determina si estás personalizando comandos que ocurren durante plan o apply. Luego estableces esa clave bajo el nombre del workflow:
...
workflows:
myworkflow:
plan:
steps:
...
apply:
steps:
...Si no estás personalizando una etapa específica, entonces puedes omitir esa clave. Por ejemplo, si solo estás personalizando los comandos que ocurren durante plan, entonces tu configuración se verá así:
...
workflows:
myworkflow:
plan:
steps:
...Argumentos extra
extra_arguments ahora se especifica de la siguiente manera. Dada una configuración anterior:
extra_arguments:
- command_name: init
arguments:
- "-lock=false"
- command_name: plan
arguments:
- "-lock=false"
- command_name: apply
arguments:
- "-lock=false"Tu configuración ahora se vería así:
...
workflows:
myworkflow:
plan:
steps:
- init:
extra_args: ["-lock=false"]
- plan:
extra_args: ["-lock=false"]
apply:
steps:
- apply:
extra_args: ["-lock=false"]Comandos pre/post
En lugar de usar pre_* o post_*, ahora puedes insertar tus comandos custom antes/después de los comandos integrados. Dada una configuración anterior:
pre_init:
commands:
- "curl http://example.com"
# pre_get commands are run when the Terraform version is < 0.9.0
pre_get:
commands:
- "curl http://example.com"
pre_plan:
commands:
- "curl http://example.com"
post_plan:
commands:
- "curl http://example.com"
pre_apply:
commands:
- "curl http://example.com"
post_apply:
commands:
- "curl http://example.com"Tu configuración ahora se vería así:
...
workflows:
myworkflow:
plan:
steps:
- run: curl http://example.com
- init
- plan
- run: curl http://example.com
apply:
steps:
- run: curl http://example.com
- apply
- run: curl http://example.comTIP
Es importante incluir los comandos integrados: init, plan y apply. De lo contrario, Atlantis no ejecutará los comandos necesarios para realmente hacer plan/apply.