Linting automatico para terraform con reviewdog y tflint
On this page
Apoya este blog
Si te resulta util este contenido, considera apoyar el blog.

Introducción#
En este artículo vamos a probar cómo lintar y obtener chequeos automáticos en nuestros pull requests de Github para nuestro código de terraform usando reviewdog y la acción tflint de github. Esto es particularmente útil para prevenir cambios no deseados o commits con errores que se mezclen en tu rama principal, sea cual sea. Para que esto funcione solo tenés que configurar una acción de Github en tu repo y listo, no necesitás generar ningún token ni hacer ningún paso extra.
Para hacer el ejemplo más simple, creé este repo con la configuración básica para hacerlo funcionar.
Terraform#
Primero necesitamos nuestro código de terraform. Como podés ver, es una instancia ec2 simple en AWS, pero el tipo de instancia no existe, lo vamos a arreglar en un momento.
resource "aws_instance" "ec2_test" {
ami = "ari-67b95e0e"
instance_type = "t1.medium"
}
Github Workflow#
Ya que estamos usando Github, podemos aprovechar Actions para correr un linter para nuestro código y marcar nuestro PR si algo está mal.
name: reviewdog
on: [pull_request]
jobs:
tflint:
name: runner / tflint
runs-on: ubuntu-latest
steps:
- name: Clone repo
uses: actions/checkout@master
# Install latest Terraform manually as
# Docker-based GitHub Actions are
# slow due to lack of caching
# Note: Terraform is not needed for tflint
- name: Install Terraform
run: |
brew install terraform
# Run init to get module code to be able to use `--module`
- name: Terraform init
run: |
terraform init
# Minimal example
- name: tflint
uses: reviewdog/action-tflint@master
with:
github_token: ${{ secrets.github_token }}
# More complex example
- name: tflint
uses: reviewdog/action-tflint@master
with:
github_token: ${{ secrets.github_token }}
fail_on_error: "true" # Optional. Fail action if errors are found
Ejemplo de PR#
Primero vamos a hacer un PR con un problema para ver cómo falla y cómo funciona el reporte (Para llegar acá podés hacer clic en la pestaña de checks en el PR y luego en el paso de tflint, mirá aquí).
Uno que realmente funciona#
Ya que lo probamos y falló como esperábamos, ahora podemos arreglarlo, y ahora que reviewdog y tflint están contentos con nuestro commit, podemos simplemente mezclarlo (solo cambien de t1 a t2 en el archivo main.tf).
Notas finales#
Para mí, esto parece particularmente útil porque puede capturar muchos errores que a veces son difíciles de detectar a simple vista, especialmente cuando hablamos de errores tipográficos. También es una buena práctica lintar tu código, así que ahí lo tenés. Espero que pruebes esto y tengas en cuenta que reviewdog puede revisar muchos lenguajes diferentes, solo elegí terraform porque es lo que más estoy usando últimamente.
Errata#
Si ves algún error o tenés alguna sugerencia, por favor mandame un mensaje así lo arreglo.
También podés ver el código fuente y cambios en el código generado y en las fuentes acá.
$ Comentarios
Online: 0Por favor inicie sesión para poder escribir comentarios.