TERRAFORM SERIES: LAB … Working on AWS: (editor) VSCode, (diretório) HELLO-INFRA e (sintaxe) MAIN.tf
Bem-vindos de volta! Quase lá … Hoje iremos visualizar a praticidade de uma infraestrutura quando a mesma é tratada como código-fonte. Às vezes chamada de programação, lógica, ou algoritmo, o fato é que para nós não basta apenas o mero exercício de enxergá-la. Quero dizer, vê-la na forma de produto final, um tipo de resultado, e pronto, acabou. Não, não é bem assim. E creio que a maioria já saiba disso. Também precisamos entendê-la, compreender a sua natureza, seu comportamento. E talvez o mais importante, o método utilizado para construí-la. Além das regras do jogo, é claro. Por exemplo, para fixar qualquer prego tenho que bater o martelo com a extremidade cuja superfície de contato é sempre a maior, e orientada diretamente para o alvo. Pois do contrário, estaria usando a ponta errada, sendo esta outra responsável pela extração, e não fixação do prego.
Analogias à parte, vamos ao que interessa 😁 (…)
>_ VS CODE : INSTALL .TERRAFORM & .GITHUB
Pule esta seção caso já o conheça e tenha instalado em sua máquina, mas Visual Studio Code trata-se de um editor de código desenvolvido pela Microsoft e que foi abraçado pela comunidade de programadores mundo afora, principalmente nos últimos anos. Evidentemente que a adoção dele (ou não) fica livre, aberta e cabe tão somente a você escolhe-lo ou quem sabe optar por outra solução. Notepad++, Geany, Sublime Text, Atom, e tantos outros, são exemplos de IDEs e editores voltados totalmente para a arte de programar. Sendo assim, depois que baixá-lo do site, disponível em https://code.visualstudio.com/download, realize o processo de instalação. Ao final abra-o e dirija-se até a loja de extensões, comumente nomeada de Marketplace. Primeiro procure por ‘GitHub‘, para configurar e sincronizar sua conta com repositórios. E por último busque por ‘Terraform‘, para ter em mãos algumas das features mais legais quando se está criando arquivos de configuração para a nuvem.
.GITHUB











.TERRAFORM




>_ code : SYNTAX EXPLAINED
https://raw.githubusercontent.com/vicrlda/terraform-aws/master/main.tf
terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 3.27" } } required_version = ">= 0.14.9" } provider "aws" { profile = "default" region = "us-east-2" } resource "aws_instance" "app_server" { ami = "
ami-045137e8d34668746
" instance_type = "t2.micro" tags = { Name = "ExampleAppServerInstance" } }
Explicando em partes, e percorrendo linha por linha:
terraform {
Sinal do início de um bloco terraform
. Este tipo sempre deverá conter configurações, inclusive (e principalmente) os provedores a serem utilizados na infraestrutura.
required_providers {
Bloco dedicado aos provedores e suas respectivas definições, como por exemplo: versão, repositório, etc. Existe também a possibilidade de restrições, a exemplo de “forçar” o Terraform a trabalhar com uma versão X do provedor pois já foi identificado pela sua equipe que a Y, mais atual e recém-lançada, “quebraria” a infra dada as próprias configurações atuais. Omissão desse parâmetro resulta sempre na última e mais nova versão do provedor. Tenha cuidado!
source = "hashicorp/aws"
Nome, apelido, e tipo de provedor a ser baixado pelo Terraform. Tudo é feito e instalado via registro, chamado de Terraform Registry
version = "~> 3.27"
Versão escolhida daquele provedor
required_version = ">= 0.14.9"
Informa qual é a versão mínima do Terraform a ser trabalhada, ou seja, toda essa configuração que está sendo elaborada apenas é garantida em versões iguais ou superiores a esta especificada.
provider "aws" {
Seção referente ao bloco provider
com todos os parâmetros desejados para o mesmo.
profile = "default"
O atributo profile
do provedor aws
refere-se ao usuário informado durante a execução do comando aws configure
Tais credenciais ficam armazenadas em um arquivo de configuração separado, que foi criado justamente quando você configurou a AWS CLI (seguindo as instruções do post anterior) Isso é feito para que NUNCA, JAMAIS tenha que passar segredos em texto plano dentro de um arquivo terraform (.tf)
region = "us-east-2"
ID de região na AWS para criar as instâncias alvo (máquinas EC2)
resource "aws_instance" "app_server" {
Blocos do tipo resource
definem os componentes lógicos e físicos para sua infraestrutura. Eles são aceitos somente se antes, na declaração do bloco, constar tanto o tipo do recurso (aws_instance
) quanto o nome para o mesmo (app_server
)
ami = "ami-045137e8d34668746"
instance_type = "t2.micro"
Argumento(s) usado(s) para incluir a imagem de um UBUNTU dentro de uma máquina T2.MICRO Atenção! pois o código de referência de qualquer imagem muda conforme a região escolhida. No meu caso, estou sempre trabalhando em Ohio, ou seja, us-east-2
, portanto, ami-045137e8d34668746
Para encontrar a sua basta visitar esse link https://cloud-images.ubuntu.com/locator/ec2/
>_ AWS : RUNNING TERRAFORM . . .
Inicializando o diretório
terraform init


Formatando e validando a configuração
terraform fmt


Criando infraestrutura
terraform apply



Listando o estado
terraform show

