O Terraform, desenvolvido pela HashiCorp , é uma ferramenta de infraestrutura como código (IaC, Infrastructure-as-code) amplamente usada que permite aos usuários definir e provisionar infraestrutura de software usando uma linguagem de configuração de alto nível. À medida que as organizações adotam cada vez mais infraestruturas baseadas em nuvem, o Terraform se tornou essencial para gerenciar e automatizar a implantação de recursos de infraestrutura. Um dos principais comandos do Terraform é o plano terraform, uma etapa essencial no processo de implantação que garante que as mudanças na infraestrutura sejam seguras, previsíveis e eficientes.
Neste artigo, veremos mais detalhadamente esse comando, o que ele faz e como interpretar sua saída para suas configurações do Terraform.
O que é o Terraform Plan?
O comando do plano terraform é uma parte vital do fluxo de trabalho do Terraform que serve como uma execução seca ou visualização das mudanças que o Terraform fará em sua infraestrutura. Ele compara o estado atual da infraestrutura com o estado desejado definido nos arquivos de configuração do Terraform e mostra as ações específicas que o Terraform tomará para preencher a lacuna. Isso inclui adições, exclusões e modificações de recursos, como criar novas máquinas virtuais, expandir bancos de dados existentes ou remover volumes de armazenamento não usados.
Benefícios do Terraform Plan
Ter a capacidade de visualizar o que a alteração do código de configuração causará à infraestrutura é benéfico de muitas maneiras, incluindo:
- Transparência: O plano Terraform fornece uma visão geral detalhada das próximas mudanças, oferecendo uma imagem clara do que será criado, modificado ou excluído em sua infraestrutura. Essa transparência ajuda a minimizar erros e garante que todos os envolvidos no processo de implantação estejam em sintonia.
- Mitigação de riscos: Ao visualizar as mudanças antecipadamente, os usuários podem identificar e resolver possíveis problemas antes que interrompam os serviços. O plano Terraform pode ajudar a descobrir conflitos de recursos (por exemplo, criar uma VM com um nome duplicado), dependências ausentes (por exemplo, um banco de dados que exige um grupo de segurança específico que não está configurado) ou modificações não intencionais devido a erros de digitação nos arquivos de configuração.
- Colaboração: O Terraform Plan integra-se perfeitamente a sistemas de controle de versão, como o Git, facilitando a colaboração da equipe. Compartilhar a saída do plano com os membros da equipe permite revisar as mudanças no contexto de compromissos de código, promovendo transparência e responsabilidade antes que as mudanças sejam implementadas.
- Eficiência: O Terraform Plan ajuda os usuários a planejar e executar mudanças de infraestrutura metodicamente. Analisar o plano permite identificar possíveis gargalos ou ineficiências antes de aplicar as mudanças.
- Segurança: O plano Terraform funciona como uma rede de segurança, permitindo que você analise e valide as alterações antes que elas sejam aplicadas à infraestrutura de produção. Essa proteção ajuda a evitar modificações acidentais e garante a estabilidade e a confiabilidade do seu ambiente de nuvem.
Como executar o plano Terraform
Para executar o plano terraforme, primeiro certifique-se de ter o Terraform instalado em sua máquina local. Você pode baixar e instalar a versão apropriada no site oficial da HashiCorp.
Antes de executar o comando Planejar, você precisará criar um arquivo de configuração básico do Terraform chamado main.tf em seu diretório de trabalho. Veja abaixo um exemplo de uma configuração simples que cria um recurso de máquina virtual em um provedor de nuvem:
# Configure the cloud provider (replace with your provider details)
provider "aws" {
region = "us-east-1"
}
# Define a virtual machine resource
resource "aws_instance" "my_vm" {
ami = "ami-0f78f7e824d9499e0" # Replace with the desired AMI ID
instance_type = "t2.micro"
}
1. Inicialize o diretório do Terraform
Navegue até seu diretório de trabalho que contém o arquivo main.tf e execute o seguinte comando em seu terminal:
$ terraform init
Esse comando inicializa o diretório do Terraform, baixa todos os plug-ins ou módulos necessários mencionados em sua configuração e prepara o ambiente para trabalhar com o Terraform.
2. Execute o plano Terraform
Quando a inicialização estiver concluída, execute o seguinte comando para gerar o plano de execução:
$ terraform plan
Este comando analisa sua configuração do Terraform e a compara com o estado atual da infraestrutura (se houver). Em seguida, ele exibe um plano detalhado descrevendo as ações que o Terraform tomará para alcançar o estado desejado definido em sua configuração. O plano normalmente mostrará os recursos que serão criados, modificados ou excluídos
3. Salve a saída do plano
Se quiser salvar o plano para referência futura ou compartilhá-lo com os membros da equipe, você pode usar o sinalizador -out com o comando plan. Por exemplo, o seguinte comando salva o plano em um arquivo chamado plan.tfplan:
$ terraform plan -out=plan.tfplan
O comando terraform plan apenas visualiza as alterações. Ele não faz nenhuma modificação em sua infraestrutura. Depois de revisar e aprovar o plano, você pode usar o comando de aplicação do formulário de terra $ para executar as alterações planejadas.
Entender e analisar a saída do plano Terraform
A saída do plano de terraforme é normalmente dividida em várias seções, cada uma oferecendo insights valiosos sobre as ações planejadas:
Ações de recursos
Esta seção lista as ações específicas que o Terraform pretende executar em seus recursos de infraestrutura. Essas ações são categorizadas em três tipos principais:
- Criar (+): Este símbolo indica que o Terraform criará novos recursos com base na sua configuração.
- Leia (~): Este símbolo significa que o Terraform lerá o estado dos recursos existentes para determinar se são necessárias alterações. Esse símbolo é menos frequente na saída do plano, pois o Terraform normalmente determina as ações necessárias durante a fase de planejamento.
- Excluir (-): Este símbolo indica que o Terraform excluirá recursos existentes que não estão mais definidos em sua configuração.
Detalhes do recurso
Esta seção fornece informações detalhadas sobre cada recurso que será afetado pelo plano. Aqui está um detalhamento dos detalhes que você normalmente pode encontrar:
- Tipo de recurso: Isso especifica o tipo de recurso de infraestrutura que o Terraform gerencia (por exemplo, aws_instance, azurerm_resource_group ).
- Nome do recurso: Isso identifica o nome exclusivo atribuído ao recurso na configuração do Terraform.
Mudanças planejadas
Esta seção detalha as mudanças específicas que serão aplicadas ao recurso. Para recursos sendo criados (indicados por +), ele listará os atributos e seus valores correspondentes que serão definidos. Para recursos que estão sendo modificados, ele mostrará as alterações nos atributos existentes.
Resumo
O resultado do plano geralmente termina com uma seção de resumo que fornece uma visão geral de alto nível das ações planejadas. Esse resumo normalmente divide o número total de recursos nas seguintes categorias:
A ser adicionado: O número de novos recursos que serão criados
A ser alterado: O número de recursos existentes que serão modificados
A ser destruído: O número de recursos existentes que serão excluídos
Quando você executa um plano de terraforme com a configuração de amostra que criamos anteriormente, obtém resultados semelhantes aos seguintes:
# $ terraform plan
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_instance.my_vm will be created
resource "aws_instance" "my_vm" {
+ ami = "ami-0f78f7e824d9499e0"
+ instance_type = "t2.micro"
+ tags = {
+ Name = "sample-tag"
}
}
1. Ações de recursos: A primeira linha indica que o Terraform executará ações de criação (+) durante esse plano.
2. Detalhes do recurso: A seção subsequente aborda os detalhes de um único recurso, aws_instance.my_vm . Isso significa que o Terraform criará uma nova instância do AWS EC2 chamada my_vm em seu ambiente AWS. Os detalhes especificam ainda mais a ID AMI (ami-0f78f7e824d9499e0), o tipo de instância (t2.micro ) e uma tag (Nome = "sample-tag ") que o Terraform aplicará à nova instância.
3. Resumo (implícito): Embora não seja explicitamente mostrado neste exemplo, um resumo pode ser exibido no final de um resultado de plano mais complexo, indicando o número total de recursos a serem criados.
Melhores práticas para usar o Terraform Plan
O comando terraform plan é sua rede de segurança antes de aplicar mudanças de infraestrutura. Veja a seguir algumas práticas essenciais para maximizar seus benefícios:
Analise as mudanças de recursos:
- Concentre-se nos recursos marcados para criação (+) ou exclusão (-).
- Verifique se os valores de atributo para novos recursos estão alinhados com sua intenção (por exemplo, ID AMI, tamanho do armazenamento).
- Verifique novamente a precisão das modificações nos recursos existentes.
Identifique possíveis problemas:
- Procure conflitos de recursos (por exemplo, nomes duplicados, dependências ausentes).
- Certifique-se de que todas as dependências necessárias (por exemplo, grupos de segurança) estejam definidas.
- Tenha cuidado com exclusões inesperadas de recursos que possam interromper os serviços.
Aproveitando a saída:
- Valide se as mudanças planejadas correspondem às suas metas de infraestrutura.
- Considere possíveis implicações de custo associadas a modificações de recursos. Você também pode compartilhar o resultado do plano para análise e comunicação da equipe.
Conclusão
O Terraform Plan é uma ferramenta avançada no fluxo de trabalho do Terraform. Ele oferece um método seguro e transparente para visualizar e validar mudanças de infraestrutura antes de aplicá-las. Ao entender e usar o plano Terraform com eficácia, você pode garantir que suas implantações sejam eficientes, previsíveis e livres de consequências não intencionais.
A Pure Storage oferece as melhores soluções de armazenamento em bloco persistentes para suas implantações do Terraform. A Portworx® oferece uma plataforma de dados abrangente para todas as cargas de trabalho de contêiner e Kubernetes Terraform. Com o Pure Cloud Block Store você pode executar qualquer carga de trabalho de banco de dados ou contêiner na nuvem, da mesma forma que faz com a infraestrutura local.