TERRAFORM SERIES: LAB … Working on AWS: Destroy e Outputs

Já sabemos como criar recursos na nuvem … Mas, e se quisermos excluí-los? Será que é tão fácil quanto? Fortuitamente, a resposta é sim 🙂 E melhor, existem três formas para isso. São elas:

  • Apagando o bloco correspondente no código-fonte. Em seguida, terraform apply;
  • Comentando o bloco. Imediatamente após, terraform apply;
  • Ou ainda, terraform destroy nome_ref

>_ Apagando

Se você utiliza controle de versão de código, por exemplo GIT, não haverá grandes consequências no fato de ir até lá e deletar o recurso, pois entende-se que a qualquer momento a ação poderá ser desfeita, bastando apenas restaurar o commit anterior (na programação, muitas vezes chamada de rollback) Sendo assim, retorne ao VScode e simule a exclusão de dois recursos: o bucket S3 e a máquina dev4

Primeiro, selecione o trecho que delimita tal recurso:

Figura 01. selecionando dev4
Figura 02. selecionando S3

Depois, pressione a tecla DELETE para excluí-los do arquivo:

Figura 03. resultado após exclusão de ambos

E por fim, para efeitos de teste e visualização (ou melhor, sem aplicar nada ainda): o bom e velho terraform plan

Figura 04. dois para destruir

>_ Comentando

Analogamente ao que fizemos no seção anterior, e permanecendo a mesma justificativa, a única diferença aqui é o atalho Ctrl+Shift+A (ou menu Edit > Toggle Block Comment) para comentar um bloco inteiro:

Figura 05. CTRL+SHIFT+A

>_ terraform destroy -target

Terceiro, e talvez o mais simples de todos, o comando terraform destroy com parâmetro -target

terraform destroy -target aws_instance.dev4
Figura 06. apenas a referência (dev4) será destruída

Percebam que caso eu transmita somente a referência (ou seja, o dito recurso) a sua dependência não necessariamente será excluída. Sendo assim, ao invés de dev4, devo passar como argumento o bucket S3:

terraform destroy -target aws_s3_bucket.dev4
Figura 07. ambas serão destruídas

Vejam só: agora sim! Tanto o recurso principal quanto a dependência serão excluídos automaticamente. Confirme com YES e depois ENTER.

Figura 08. SIM para confirmar

Então, o que temos a partir deste ponto é … Nada nessa mão:

Figura 09. dev4 completamente encerrada

E igualmente, nada nesta outra:

Figura 10. nenhum S3 rodando

>_ Exibindo informações: OUTPUTS

Lógica simples, podemos ter acesso a qualquer informação de um dado recurso X, usando o comando terraform output Para isso, crie um novo arquivo chamado outputs.tf e edite o mesmo conforme o seguinte:

output "ips" {

  value = "${aws_instance.dev6.public_ip}"
  
}

Quase pronto! Como se trata de uma instância em execução, o comando output ainda não tem gravado essa informação, pois a infraestrutura já foi provisionada e será a primeira vez que rodaremos o mesmo. Portanto, antes disso, execute outro chamado terraform refresh

Figura 11. atualizando para repassar ao comando output

Magnífico não?! 😮 Pois é, e dá pra melhorar ainda mais, acrescentando/especificando uma variável única (do tipo “saída”) para cada item (correspondência: recurso = informação) Observem:

output "dev6" {

  value = "${aws_instance.dev6.public_ip}"

}

output "dev5" {

  value = "${aws_instance.dev5.public_ip}"

}
Figura 11. nova saída

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.