Gerenciamento de estado do Terraform

Gerenciamento De Estado Do Terraform



Infraestrutura como código é o procedimento de gerenciamento e provisionamento da infraestrutura de TI por meio de código que ajuda a superar a complexidade do provisionamento em larga escala e do gerenciamento manual e repetido dos recursos de TI. O Terraform da HashiCorp é uma ferramenta IaC de código aberto que usa um sistema de gerenciamento de estado para rastrear alterações e gerenciar os arquivos de estado. Seu sistema de gerenciamento de estado é um de seus principais recursos e ajuda a acompanhar as mudanças de infraestrutura de forma eficaz. Este artigo se aprofunda em como o gerenciamento de estado do Terraform funciona e como usá-lo de forma eficaz.

Estado da Terraforma

O estado atual de nossa infraestrutura, que inclui informações sobre os recursos que definimos em nosso código, é registrado como estado Terraform. O Terraform usa esse estado para determinar as alterações necessárias para colocar nossa infraestrutura no estado desejado quando um comando como Terraform “apply” é executado. Após executar as alterações (criar, modificar e excluir), o Terraform atualiza o arquivo de estado com o novo estado de sua infraestrutura.

Para entender claramente o conceito, vamos dar um exemplo:







recurso 'arquivo_local' 'John' {

nome do arquivo = '/home/João.txt'

conteúdo = 'Eu amo animais de estimação'

}

Aqui, criamos um arquivo Terraform chamado “main.tf”. Dentro dele está um recurso do tipo local_file chamado “John” com dois atributos: filename e content.



O tipo de recurso local_file é usado para criar um arquivo no sistema de arquivos local da máquina em que o Terraform está sendo executado. Neste caso, o arquivo é criado com o nome “John.txt” no diretório “/home” e o conteúdo do arquivo é “I love pets”.



Agora, vamos executar o fluxo do Terraform – inicialização, planejamento e aplicação do Terraform. Quando executamos o comando “apply” do Terraform em nosso projeto pela primeira vez, o Terraform cria automaticamente o arquivo de estado chamado “terraform.tfstate” no diretório raiz do nosso projeto Terraform. Inclui toda a informação sobre o estado atual da nossa infraestrutura em formato JSON.





Aqui está o arquivo de estado para o recurso que criamos:



Agora, digamos que queremos remover o recurso atual e criar outro recurso do tipo random_pet chamado “my-pet” com atributos – prefixo, comprimento e separador.

recurso 'animal_aleatório' 'meu animal de estimação' {

prefixo = 'Senhor'

comprimento = '1'

separador = '.'

}

Aqui, removemos o recurso local_file e adicionamos um recurso random_pet. Nosso estado desejado é ter apenas o recurso random_pet. Vamos executar os comandos init, plan e apply do Terraform.

Conforme mostrado na ilustração anterior, quando executamos o comando “planejar” do Terraform, ele mostra as ações que o Terraform realiza para chegar ao estado desejado. Quando executamos o comando “apply” do Terraform, o recurso “my-pet” é criado e o recurso “John” é removido. Além disso, o arquivo de estado é atualizado destruindo os metadados do recurso local_file e adicionando os metadados do recurso random_pet.

Aqui está o conteúdo do arquivo de estado atualizado:

Como funciona o Terraform the Manage State?

Usando um back-end, o Terraform gerencia o estado. Um back-end é um serviço remoto ou sistema de arquivos local que o Terraform usa para armazenar e recuperar os dados de estado. Dependendo de nossos requisitos, podemos escolher um back-end adequado.

O Terraform oferece suporte a vários back-ends integrados, incluindo armazenamento local, Amazon S3, HashiCorp Consul, Vault e Azure. Também podemos criar um back-end personalizado se nenhuma das opções integradas atender às necessidades.

Nos exemplos anteriores, os arquivos de estado foram armazenados no back-end local. Mas armazená-lo em um back-end remoto é a melhor prática, pois invoca a colaboração e aumenta a segurança.

Importância da Gestão do Estado

O gerenciamento de estado em ferramentas como o Terraform é essencial devido aos seguintes pontos-chave:

Determine o estado atual de sua infraestrutura

O arquivo de estado fornece um instantâneo preciso dos recursos existentes e seus atributos atuais. Esses dados são essenciais para compreender nossa infraestrutura e garantir que ela esteja no estado desejado.

Acompanhe as mudanças na infraestrutura ao longo do tempo

Sempre que aplicamos as alterações usando o Terraform, o arquivo de estado é atualizado para refletir o novo estado de nossa infraestrutura. Isso nos permite rastrear como nossa infraestrutura evoluiu e fornece uma trilha de auditoria de todas as alterações.

Automação

Definir seu estado de infraestrutura desejado no código nos permite automatizar a criação e o gerenciamento de nossa infraestrutura. O gerenciamento de estado garante que nossa infraestrutura permaneça desejada, mesmo que as alterações sejam feitas ao longo do tempo.

Gerenciar dependências

Com o Terraform, podemos definir os relacionamentos entre os recursos em nosso arquivo de configuração, e o Terraform usa o arquivo de estado para garantir que esses relacionamentos sejam mantidos. Isso garante que as alterações em um recurso não afetem inadvertidamente outros recursos.

Recuperação de desastres

Se ocorrer uma falha ou interrupção, podemos usar o arquivo de estado para recriar a infraestrutura em um estado conhecido. Isso pode ajudar a minimizar o tempo de inatividade e garantir que nossa infraestrutura seja restaurada com rapidez e eficiência.

Melhores práticas para gerenciamento de estado eficaz

Aqui estão algumas dicas que podemos seguir para gerenciar os estados de forma eficaz:

Use um back-end remoto

Um back-end remoto oferece vários benefícios em relação a um back-end local. Ele permite que vários usuários trabalhem na mesma infraestrutura e também oferece melhor segurança e confiabilidade do que os back-ends locais.

Ativar controle de versão

Ao controlar a versão do arquivo de estado, podemos rastrear as alterações ao longo do tempo e reverter para uma versão anterior, se necessário. Além disso, o controle de versão fornece uma trilha de auditoria e ajuda a garantir que as alterações sejam devidamente documentadas.

Use um mecanismo de bloqueio

Podemos usar um mecanismo de bloqueio que ajuda a evitar conflitos quando vários usuários trabalham na mesma infraestrutura. O Terraform oferece suporte a várias ferramentas de bloqueio, incluindo DynamoDB, Consul e S3.

Faça backup do seu arquivo de estado

Podemos nos recuperar da corrupção de dados se fizermos backup do arquivo de estado regularmente. Devemos armazenar os backups em um local seguro e seguir todos os requisitos de conformidade relevantes.

Conclusão

Tivemos uma breve introdução ao IaC e ao Terraform enquanto entendêmos os arquivos de estado e os gerenciamos por meio de exemplos. Entender como o Terraform funciona no estado pode nos ajudar a evitar armadilhas comuns e garantir que nossa infraestrutura continue sendo desejada. Seguindo as melhores práticas para gerenciar estados, podemos usar o Terraform com confiança e eficiência.