11 de fevereiro de 2021 • 2 min de leitura
Terraform: Gerenciamento de versões e backends
É muito importante que as versões e backends compatíveis com o projeto desenvolvido seja definida, evitando conflitos ou falta de compatibilidade.
No Terraform temos a possibilidade de definirmos algumas regras para o nosso projeto, como onde o seu backend deve ser armazenado e quais as versões de providers e terraform são compatíveis com os nossos módulos.
Backends
Cada projeto Terraform pode especificar um backend, que define onde e como e onde os arquivos de estado são armazenados etc.
Existem alguns tipos de backends, remoto e local. Se você estiver aprendendo a utilizar o Terraform agora, é indicado que utilize o backend local, que não necessita de nenhuma configuração. Caso tenha pretensão de utiliza-lo de forma profissional, será abordado a configuração de um backend remoto.
Inicialização
Sempre que o backend de uma configuração muda, você deve executar o terraform init
novamente para validar e configurar o backend antes de executar qualquer outra operação de plan ou apply.
Ao alterar o backend, o Terraform alertará sobre a possibilidade de migrar seu tfstate para o novo backend. Isso permite que você adote backends sem perder nenhum tfstate existente.
Backend Remoto
A configuração de um backend remoto se dá através de um bloco de backend dentro do nosso projeto terraform. Abaixo temos como exemplo a configuração de um backend remoto utilizando o s3 na AWS.
terraform {
backend "s3" {
bucket = "tfstate-backend"
key = "terraform-teste.tfstate"
region = "us-east-1"
encrypt = true
}
}
Acima, estamos referenciando algumas informações referente ao nosso beckend:
bucket
= Nome do nosso bucket já criado no s3key
= Nome dado ao nosso arquivo de estadoregion
= Região do bucketencrypt
= Habilitar criptografia no bucket
Versões
É muito importante que seja determinado as versões que são compatíveis com o nosso projeto. Amarrar esse tipo de configuração no Terraform faz com que nós tenhamos certeza de que o projeto não quebre quando outras pessoas precisarem utiliza-lo.
O comum nesse caso, para configuração de versões, é criado um arquivo chamado versions.tf
e nele podemos definir as versões que devem ser utilizadas:
terraform {
required_version = "~> 0.14"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
}
Acima definimos a versão necessária do nosso Terraform e do nosso provider. A expressão ~>
define que apenas as minor releases são aceitas. Por exemplo, caso já esteja disponível a versão 3.0.6 a mesma encontra-se apta para utilização no nosso projeto.
É isso pessoal, espero que tenham entendido a ideia referente a utilização de beckends e configurações de versões. Em nosso próximo artigo abordaremos a configuração de workspaces.