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 é:

Figura 01. grupos de segurança apontados via ID

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

terraform show
Figura 02. maiores informações via terminal

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

Figura 03. grupos apontados via referência

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
Figura 04. sem alterações!

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
Figura 05.
Figura 06. planejamento da instância DEV4
Figura 07. planejamento da instância DEV5
Figura 08. planejamento do bucket S3
terraform apply
Figura 09.

Ú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

Figura 10. executando DEV4 e DEV5

PÁGINA INICIAL > AMAZON S3 > BUCKETS

Figura 11. executando S3

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

Deixe uma resposta

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