TERRAFORM SERIES: LAB … Working on AWS: (link) GROUP-ID, (estado) FILE.tfstate, e (chave) SSH-CONNECT

Há pouco mais de um mês estávamos criando nosso grupo de segurança para controlar o acesso às instâncias EC2. Pois bem, chegou a hora de testá-lo, atribuindo o mesmo de forma automática, via TERRAFORM. Vamos lá!

Primeiramente, retorne a aws console com seu respectivo usuário e senha tradicionais. Login feito, agora percorra o seguinte PATH:

PÁGINA INICIAL > PAINEL EC2 > REDE E SEGURANÇA > SECURITY GROUPS > SSH-ACCESS

Uma vez selecionado o grupo, copie e cole não o nome, mas sim o id do mesmo. Por exemplo:

sg-044c0695ddfa19d2b
Figura 01. group-id

Siga para o VScode e acrescente o parâmetro correspondente dentro do recurso “aws_instance”, passando como argumento o pŕoprio ID:

vpc_security_group_ids = [ "value" ]

Dessa forma, o que temos é:

Figura 02. referência/parâmetro para o group-id

Como boa prática, devemos sempre executar o plan antes do apply. Por que? Bem, ambientes de produção além de serem críticos, ou seja, essenciais e vitais para o negócio/empresa, eles são na grande maioria bastante “sensíveis”, digamos assim. Em termos práticos, uma alteração/deploy errada(o) em determinado recurso, e toda a infraestrutura vai por água abaixo. Máquinas que não se comunicam mais, usuários que perdem acesso, clientes insatisfeitos pela demora ao carregar o sistema, serão “apenas” alguns dos possíveis efeitos colaterais sentidos pela sua equipe interna. Então, já sabe, primeiro rode o comando terraform plan para visualizar as mudanças propostas, sem afetar diretamente a infra.

terraform plan
Figura 03. saída do planejamento … parte um
Figura 04. saída do planejamento … parte dois

Bom, é exatamente aqui que chamo a atenção de todos para duas coisas. A primeira é o resumo do plano, que quando traduzido nos informa: “não há nenhuma adição, muito menos remoção, o que existe são três alterações a serem efetuadas”. Já a segunda, diz respeito ao elementos visuais presentes na tela e que são utilizados como maneira de destaque dos itens para o usuário. Vejam que o TERRAFORM sempre marca as ditas mudanças em amarelo, sendo precedidas pelo acento til (~) :

Figura 05. alterações em amarelo (~)

E quando nos debruçamos ainda mais sobre o código, veremos que o atributo vpc_security_group_ids tem em seu comportamento padrão a espera de uma única string. Em outras palavras, ele retira o grupo atual e acrescenta o novo especificado. Mas não é bem isso que queremos, pois a ideia continua sendo provisionar três máquinas diferentes para três desenvolvedores distintos, salvando a guarda de todas apresentarem um nível mínimo de comunicação entre si (icmp, ping, dns, etc). Portanto, devemos tratar tal referência/parâmetro/atributo como uma lista, na programação diversas vezes chamada de array ou vetor. Então, fica a reflexão: muito cuidado na hora escolher o que você pretende … (A/-) uma STRING que substitui o grupo vigente por outro ou (B/+) uma LISTA constando o atual e mais um, dois, três novos grupos? Pense bem!

No nosso caso, vamos de alternativa B: ssh + default

vpc_security_group_ids = [ "sg-044c0695ddfa19d2b","sg-064d06ebd73c18ed4" ]

Detalhe importante, posicione sempre uma vírgula ( , ) a cada novo ID informado:

Figura 06. IDs separados pelo sinal vírgula ( , )

Execute novamente o plan para checar se o TERRAFORM fará o determinado por você:

terraform plan
Figura 07.

A-há! Agora sim, tudo pronto para entrar em PRODUÇÃO:

terraform apply
Figura 08.

>_ TESTE FINAL #01 . . .

Figura 09. selecionar uma das instâncias, abrir a aba “segurança”, observar os grupos pertencentes.

>_ TESTE FINAL #02 . . .

terraform show
Figura 10. informações a respeito da instância [0]
terraform.tfstate
Figura 11. mesmo conjunto de informações a respeito da máquina [0]. extraídas do arquivo terraform.tfstate (pasta local do projeto)

>_ TESTE FINAL #03 . . .

Figura 12. selecionar uma instância, clicar na botão “conectar”, e por fim copiar o comando sugerido
ssh -i "terraform-kali" [email protected]
Figura 13. conexão estabelecida! parabéns!

Vlw! Flw! E até … Até mais! 🙂

Deixe uma resposta

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