TERRAFORM SERIES: LAB … Working on AWS: Referências, Dependências e Recursos
Para alguns talvez ainda não tenha ficado tão claro assim, mas a premissa do TERRAFORM é prover recursos em nuvem sem nenhum tipo de auxílio ou ajuda “visual/gráfica” (e sim, estou falando principalmente das consoles web) Trata-se de escrever código, observar quais mudanças aquele fonte propõe, aplicá-las em PRODUÇÃO, e partir para a demanda seguinte. Sem mais, nem menos. Em outras palavras, validar aqui aquele “famigerado” planejamento do TERRAFORM torna-se opcional, e não primordial. Diria até redundante e desnecessário, sem medo algum (hahaha) Então, a partir de agora, deixemos para trás a velha mania de ficar pressionando F5 na página das instâncias, por exemplo. Basta acreditar! Tenha fé! rsrs
Ok Victor, você fala como se fosse fácil 🙁 Mas como é possível não olhar na console quando se trata daqueles IDs dos grupos hein? Deveras uma excelente pergunta meu caro rapaz E a resposta está no que é conhecido simplesmente por referência, um recurso nativo e bastante útil. Explicando melhor. Não, não. Ilustrando melhor, o que temos atualmente é:

MAS, uma vez executado tal comando, obtemos o seguinte:
terraform show

PORTANTO, fazendo uma equivalência (o termo mais apropriado é referência mesmo) é possível chegar em:

Só nos resta agora testá-lo pra ver se realmente funciona, mas lembre-se: sem alterar nada de fato. É como se estivéssemos trocando seis por meia dúzia. Afinal isso é uma mera equivalência, ou seja, apenas outra forma de referenciar os ditos grupos de segurança.
terraform plan

Avançando na pauta, chegou a hora das dependências. Bem, se somos capazes de referenciar o recurso X de N maneiras, também podemos definir uma ordem pré-estabelecida entre o mesmo e diversos outros (K, Y, Z) Por exemplo, supondo que uma nova aplicação entrará no ar muito em breve, e por isso foi solicitado uma quarta máquina como servidor web, e uma quinta para banco de dados na forma de bucket S3 … Como você faria? A seguir:
resource "aws_s3_bucket" "dev4" { bucket = "srv-dev4"
acl = "private" tags = { Name = "srv-dev4" } }
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket
resource "aws_instance" "dev4" { ami = "ami-045137e8d34668746" instance_type = "t2.micro" key_name = "terraform-kali" tags = { Name = "dev4" } vpc_security_group_ids = [ "${aws_security_group.ssh-access.id}" ]
depends_on = [ aws_s3_bucket.dev4 ] } resource "aws_instance" "dev5" { ami = "ami-045137e8d34668746" instance_type = "t2.micro" key_name = "terraform-kali" tags = { Name = "dev5" } vpc_security_group_ids = [ "${aws_security_group.ssh-access.id}" ] }
terraform plan




terraform apply

Última vez que faremos isso hein?! (Lembrem-se: Acredite! Fé!) Como teste final, volte para web e observe as seguintes localidades:
PÁGINA INICIAL > PAINEL EC2 > INSTÂNCIAS

PÁGINA INICIAL > AMAZON S3 > BUCKETS

Deu certo? Comenta aqui embaixo . . .
>_ REFERÊNCIAS:
https://groups.google.com/g/terraform-tool/c/bXZc1KNAcgU?pli=1
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/s3_bucket