Post

Como usar o TFLint para verificar erros em seu código Terraform [Azure]

Fala galera! Seis tão baum?

Bem-vindos de volta à nossa série de artigos sobre Terraform! Hoje vamos falar sobre uma ferramenta essencial para garantir a qualidade do seu código Terraform: o TFLint.

Se você já passou por situações em que erros passaram despercebidos e acabaram causando problemas em sua infraestrutura, o TFLint está aqui para te ajudar!

Vamos explorar o que é o TFLint, como ele funciona e como você pode usá-lo para verificar seu código Terraform. Vamos lá!

1. O que é o TFLint?

O TFLint é uma ferramenta de análise estática de código específica para o Terraform. Ele verifica seu código em busca de erros, possíveis problemas e más práticas, seguindo as melhores práticas recomendadas pela comunidade Terraform.

Com o TFLint, você pode garantir que seu código esteja bem estruturado, evitando erros que possam comprometer sua infraestrutura.

2. Como o TFLint funciona?

O TFLint funciona analisando os arquivos de código Terraform em busca de problemas comuns e recomendações de melhores práticas. Ele verifica aspectos como recursos obsoletos, recursos não utilizados, má formatação, falta de tags, entre outros. O TFLint usa regras pré-definidas para realizar essa análise e fornece mensagens de erro ou aviso caso algum problema seja encontrado.

3. Como instalar o TFLint?

A instalação do TFLint é simples e direta. Siga os seguintes passos para instalar o TFLint em seu sistema:.

Para Linux ou macOS:

  • Abra um terminal.
  • Utilize um gerenciador de pacotes, como o Homebrew, para instalar o TFLint executando o seguinte comando:
1
brew install tflint

Aguarde até que a instalação seja concluída. O TFLint e suas dependências serão baixados e configurados automaticamente.

Para Windows:

  • Abra um prompt de comando ou PowerShell.
  • Faça o download do binário do TFLint a partir do repositório oficial no GitHub. Você pode encontrar o link correto para download na seção de releases do repositório.
  • Extraia o conteúdo do arquivo baixado em uma pasta de sua escolha.
  • Adicione o caminho da pasta onde o binário foi extraído ao seu PATH de sistema. Isso permitirá que você execute o TFLint a partir de qualquer diretório no prompt de comando ou PowerShell.

Após concluir esses passos, o TFLint estará instalado em seu sistema e pronto para uso.

Verificando a instalação:

Para verificar se a instalação do TFLint foi concluída com sucesso, abra um terminal ou prompt de comando e execute o seguinte comando:

1
tflint --version

Isso exibirá a versão do TFLint instalada em seu sistema. Se você receber a informação da versão sem nenhum erro, isso significa que o TFLint foi instalado corretamente.

Agora que o TFLint está instalado, você pode prosseguir para a configuração e utilização dessa poderosa ferramenta para verificar seu código Terraform.

4. Como configurar o TFLint?

Antes de utilizar o TFLint, você pode configurar as regras e personalizá-lo de acordo com suas necessidades. O TFLint suporta a criação de um arquivo de configuração chamado .tflint.hcl, onde você pode definir regras específicas, ignorar determinados erros e muito mais.

5. Exemplo de configuração do arquivo .tflint.hcl

O arquivo .tflint.hcl é um arquivo de configuração usado pelo TFLint para personalizar o comportamento das verificações de código Terraform. Ele permite que você defina regras específicas, configure severidades de erros, exclua diretórios ou arquivos específicos da verificação e muito mais.

Aqui está um exemplo básico de um arquivo .tflint.hcl para uso com recursos do Microsoft Azure:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
module "example_module" {
  enabled_rules = [
    "azure_region_not_supported",
    "azure_virtual_machine_no_tags",
  ]
  
  ignore_rule = [
    "terraform_backend_required",
    "terraform_deprecated_provider",
  ]

  exclude_paths = [
    "modules/*",
    "**/test/**",
  ]
}

Neste exemplo, configuramos o TFLint para verificar duas regras específicas: azure_region_not_supported e azure_virtual_machine_no_tags. Essas regras ajudam a garantir que você não esteja usando uma região não suportada pelo Azure e que todas as máquinas virtuais possuam tags.

Além disso, utilizamos a opção ignore_rule para excluir duas regras específicas: terraform_backend_required e terraform_deprecated_provider. Isso pode ser útil se você estiver utilizando um ambiente específico onde essas regras não são aplicáveis.

Por fim, usamos exclude_paths para definir quais diretórios ou arquivos devem ser excluídos da verificação. No exemplo acima, estamos excluindo qualquer arquivo dentro da pasta modules/ e qualquer arquivo dentro de qualquer diretório que contenha a subpasta test/. Isso pode ser útil para evitar verificações em arquivos de teste ou em módulos externos.

Ao personalizar o arquivo .tflint.hcl de acordo com suas necessidades específicas, você pode adaptar as verificações do TFLint ao seu ambiente e garantir a conformidade do seu código Terraform com as melhores práticas.

6. Utilizando o TFLint para verificar seu código

Agora que o TFLint está instalado e configurado, vamos ver como utilizá-lo para verificar seu código Terraform. Suponha que você tenha o seguinte código Terraform para criar uma instância do Azure Virtual Machine:

1
2
3
4
5
6
7
8
9
10
11
12
resource "azurerm_virtual_machine" "example_vm" {
  name                  = "example-vm"
  location              = "West US"
  resource_group_name   = "example-resource-group"
  vm_size               = "Standard_DS2_v2"
  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "16.04-LTS"
    version   = "latest"
  }
}
  • Abra um terminal ou prompt de comando e navegue até o diretório onde seu código Terraform está localizado.
  • Execute o comando tflint para iniciar a verificação:
1
tflint

O TFLint analisará seu código Terraform e apresentará as saídas na tela. Cada problema encontrado será exibido em um formato semelhante ao seguinte exemplo:

1
2
3
4
Error: Missing required tag "Name" in azurerm_virtual_machine.example_vm

  on main.tf line 3:
  3: resource "azurerm_virtual_machine" "example_vm" {

Nesse exemplo, o TFLint identificou que a tag obrigatória "Name" está faltando no recurso azurerm_virtual_machine.example_vm definido no arquivo main.tf. Ele fornece a localização do problema, destacando a linha específica onde ocorre.

O TFLint também fornece informações adicionais sobre cada problema encontrado. Por exemplo, ele pode exibir uma descrição do erro e uma sugestão para corrigi-lo:

1
2
3
Description: The "Name" tag is required for better resource identification and management.

Suggestion: Add the "Name" tag to the resource with an appropriate value.

Essas informações ajudam a entender o motivo do problema e fornecem diretrizes claras sobre como corrigi-lo.

Além disso, o TFLint atribui uma severidade a cada problema encontrado. Existem três níveis de severidade:

  • error: Indica um problema crítico que precisa ser corrigido.
  • warning: Indica um aviso sobre uma possível má prática ou problema menor.
  • info: Fornece informações adicionais, mas não indica problemas específicos.

A severidade de cada problema é indicada na saída do TFLint para ajudar a priorizar as correções.

Ao utilizar o TFLint, é importante prestar atenção às saídas geradas e corrigir todos os problemas identificados. Isso garantirá que seu código Terraform esteja livre de erros e siga as melhores práticas recomendadas.

Se você deseja visualizar uma lista completa de todas as regras disponíveis e suas descrições, você pode executar o seguinte comando:

1
tflint --list-rules

Isso exibirá todas as regras suportadas pelo TFLint, permitindo que você explore mais a fundo as verificações que ele realiza.

Lembre-se de executar o TFLint regularmente à medida que você desenvolve seu código Terraform, para identificar e corrigir problemas antes de implantar sua infraestrutura.

7. Conclusão

O TFLint é uma ferramenta poderosa para garantir a qualidade do seu código Terraform. Com sua análise estática, você pode identificar e corrigir erros e más práticas antes de implantar sua infraestrutura. Ao utilizar o TFLint, você evita dores de cabeça no futuro e garante um ambiente de infraestrutura mais confiável.

Então, não deixe de adicionar o TFLint à sua caixa de ferramentas Terraform!

Se você tiver alguma dúvida ou comentário, sinta-se à vontade para compartilhá-los conosco na seção de comentários abaixo!

É isso galera, espero que gostem!

Forte Abraço!

Este post está licenciado sob CC BY 4.0 e pelo autor.