Gerenciamento de estado do Terraform com recursos da Megaport
Este tópico descreve o arquivo de estado do Terraform e as práticas recomendadas para usá-lo a fim de mapear seus arquivos de configuração para os serviços da Megaport implantados na sua rede.
What is Terraform state?
Terraform armazena informações sobre os recursos que você criou em um arquivo de estado, chamado terraform.tfstate.
Esse arquivo é criado automaticamente após a execução do comando terraform apply. Ele fornece um snapshot da sua infraestrutura gerenciada pelo Terraform em um ponto específico no tempo. É criado no mesmo diretório em que o Terraform é implantado. Recomendamos monitorar o terraform.tfstate regularmente.
Os principais objetivos do arquivo de estado do Terraform são:
-
Mapeamento de recursos do mundo real – O arquivo de estado acompanha os recursos de infraestrutura do mundo real que o Terraform criou e está gerenciando. Ele registra informações sobre suas configurações, IDs e dependências.
-
Fonte de verdade – O arquivo de estado é a fonte de verdade sobre sua infraestrutura atual. Quando você executa o comando
terraform apply, ele compara seus arquivos de configuração com o arquivo de estado para determinar quais mudanças precisam ser feitas. -
Rastreamento de metadados – O arquivo de estado armazena metadados que o Terraform usa internamente, como a versão do Terraform usada para criar o estado e as dependências dos recursos.
Para mais informações sobre o arquivo de estado do Terraform, consulte State (HashiCorp).
Compreendendo o estado do Terraform para recursos da Megaport
O estado do Terraform é um componente crucial que mapeia seus arquivos de configuração para os recursos da Megaport implantados na sua rede. Quando você executa o comando terraform apply, o Terraform cria um arquivo de estado, terraform.tfstate, que rastreia todos os recursos que ele gerencia, suas configurações e interdependências.
O que o arquivo de estado do Megaport Terraform Provider contém?
Para recursos da Megaport, o arquivo de estado rastreia informações como:
- IDs e UIDs de recursos
- Configurações de Port
- Configurações de VXC
- Configurações do roteador MCR
- Conexões com parceiros
- Informações de localização
Conceitos-chave de gerenciamento de estado
-
Importação de recursos existentes – Se você já tem serviços da Megaport configurados pelo Portal, use o comando
terraform importpara colocá-los sob o gerenciamento do Terraform:Exemplo 1: Importar um Port existente
terraform import megaport_port.my_port "example-uid-41d4-a716-446655440000"Exemplo 2: Importar um VXC existente
terraform import megaport_vxc.my_vxc "example-uid-426f-9247-bb680e5fe0c8"Para mais informações, consulte Importando serviços de produção existentes.
-
Prevenção de exclusões acidentais – Para proteger a infraestrutura crítica, use o recurso de ciclo de vida
prevent_destroydo Terraform. Essa opção impede a exclusão acidental de recursos existentes ao aplicar atualizações de configuração. Para mais informações, incluindo alguns exemplos, consulte Megaport Terraform Provider GitHub repository, Lifecycle Prevent Destroy Example. -
Armazenamento do arquivo de estado para ambientes de equipe – Por padrão, o Terraform armazena as informações de estado localmente.
Para armazenamento do arquivo de estado do Terraform em ambientes de equipe, recomenda-se usar um espaço de armazenamento remoto para colaboração, controle de versão e segurança.
- Use armazenamento remoto de estado (Terraform Cloud, S3 e assim por diante).
- Habilite o bloqueio de estado para evitar modificações simultâneas.
- Considere criptografar os arquivos de estado, pois eles contêm informações confidenciais.
-
Manutenção do arquivo de estado – Ocasionalmente, você pode precisar usar alguns comandos, por exemplo:
terraform state listpara ver todos os recursos gerenciados.terraform state showpara examinar um recurso específico.terraform state rmpara remover um recurso do estado sem destruí-lo.
-
Tratando o drift de estado – O arquivo de estado do Terraform acompanha toda a infraestrutura que ele gerencia. Alterar esses recursos manualmente fora do Terraform pode fazer com que o arquivo de estado se torne impreciso, uma situação conhecida como drift.
Se o registro do Terraform sobre sua infraestrutura não corresponder à realidade, ele tentará corrigir as discrepâncias, o que pode levar à exclusão ou recriação não intencional dos seus recursos. Para mais informações, consulte Manage resource drift (HashiCorp).
Se alterações forem feitas em recursos da Megaport fora do Terraform:
- Use o comando
terraform refreshpara atualizar o estado com as configurações atuais dos recursos. - Considere executar regularmente o comando
terraform planpara detectar mudanças não autorizadas.
- Use o comando
Recommended practices
Recomendamos seguir estas práticas para obter resultados ideais com o Terraform:
- Faça backup do seu arquivo de estado regularmente – Perder esse arquivo é irreversível.
- Versione seus arquivos de configuração – No entanto, nunca salve arquivos de estado contendo dados confidenciais, como credenciais. Para mais informações, consulte Sensitive Data in State (HashiCorp).
- Modularize configurações complexas – Essa abordagem melhora o gerenciamento de recursos, promovendo uma estrutura mais organizada e reutilizável.
- Bloqueie os serviços da Megaport no Portal – O estado do Terraform é a fonte de verdade para o gerenciamento de recursos. Para evitar alterações conflitantes nos serviços de produção no Portal e no Terraform, é recomendado bloquear os serviços de produção. Para mais informações, consulte Bloqueando serviços da Megaport.
Para mais informações, consulte Learn Terraform recommended practices (HashiCorp).
Helpful references
- terraform plan command (HashiCorp)
- State (HashiCorp)
- Target resources (HashiCorp)
- Manage resource lifecycle (HashiCorp)
- Megaport Terraform Provider GitHub repository, Lifecycle Prevent Destroy Example
- Manage resource drift (HashiCorp)
- Sensitive Data in State (HashiCorp)
- Learn Terraform recommended practices (HashiCorp)