Utilizar o Terraform com os serviços da AWS é o casamento perfeito, onde você ganha muita produtividade e um ambiente seguro. Pensando nisso hoje vamos criar um instância no EC2 e uma bucket no S3 em conjunto com o Terraform (como dito no título certo?)
Iniciando os trabalhos
Um ponto importante a ser ressaltado é que eu migrei meu SO recentemente para uma distro Linux (sim o Ubuntu), então vocês irão ver bastante comandos UNIX em meus conteúdos, o que não irá atrapalhar o entendimento creio eu...
Bom então vamos criar a uma pasta para nosso projeto:
$ mkdir aws && cd aws
O que fizemos com o comando acima foi criar a pasta e entrar na mesma para começarmos os trabalhos.. Temos que criar um arquivo de configuração para o Terraform (você tem que ter ele instalado não se esqueça, aqui tem uns tutoriais meus ensinando como instalar no Linux, macOS e Windows.. mas enfim chega de merchan) ele deverá ter a extensão tf
:
vi configuration.tf
AWS Services
Agora precisamos conversar não sei se você está vendo este tutorial para terminar uma task ou para estudar mas em ambos os casos é necessário ter o acesso ao Serviços da AWS. Então para processeguir precisamos de:
- Provedor: Um provedor de nuvem, AWS no nosso caso
- Secret Acess Key: Que devemos obter para acessar os recursos da AWS
Para prosseguir precisaremos definir a instância da AWS, ou seja, AMIR (check no Amazon EC2 AMI Locator), tipo de instância e tag.
A instância é baseada no Amazon EBS (o que significa que o volume raiz é um volume do EBS). Você pode especificar a zona de disponibilidade na qual sua instância é executada ou deixar o Amazon EC2 selecionar uma zona de disponibilidade para você. Você pode pensar em uma zona de disponibilidade como um datacenter isolado. Para criar a instânia abra o console do EC2 e clique e m Lauch Instance para criar e configurar:
Configurando nossa instância, nesta tela são mostradas opções para escolher uma Imagem da Máquina do Amazon (AMI). OS AMIs são modelos de servidor pré-configurados que você pode usar para iniciar uma instância. Cada AMI inclui um sistema operacional, e também pode incluir aplicativos e servidores de aplicativos.
Para este tutorial, encontre o Amazon Linux AMI e clique em Select.
Agora você escolherá um tipo de instância. Os tipos de instâncias compreendem combinações variadas de CPU, memória, armazenamento e capacidade de rede para que você possa escolher o mix apropriado para seus aplicativos. Para obter mais informações, consulte os Tipos de Instâncias do Amazon EC2.
A opção padrão do t2.micro já deve ser verificada. Este tipo de instância oferece capacidade de computação suficiente para lidar com cargas de trabalho simples. Clique em Review e Launch na parte inferior da página.
Podemos revisar as configurações, armazenamento, marcação e configurações de segurança selecionadas para nossa instância. Possuímos a opção de personalizar essas configurações, mas recomendo (e a Amazon também) a aceitar os valores padrão para este tutorial.
Na próxima tela, seremos solicitados a escolher um par de keys existente ou criar um novo par de keys. Um par de keys é usado para acessar com segurança sua instância Linux usando SSH. A Amazon Web Services armazena a parte pública do par-chave que é como um cadeado de casa. Você baixa e usa a parte privada do par de keys que é como uma chave de casa.
Selecione Create a new key pair e vamos dar o nome MyKeyPair (você pode escolher o que preferir). Clicamos em seguida, no botão "Download Key Pair".
Depois de baixar a chave MyKeyPair, você vai querer armazenar sua chave em um local seguro.
⚠️ Se você perder sua chave, você não será capaz de acessar sua instância. Se outra pessoa tiver acesso à sua chave, ela poderá acessar, simples assim. Para saber mais sobre como armazenar sua Key de forma segura sugiro que dê uma lida aqui
Finalmentes
Calma estamos chegando no final já, no passo anterior criamos uma instância no EC2 via interface mas agora vamos criar tudo utilizando o Terraform e lembrando que também precisamos criar uma Bucket no S3 chamado bucket-launched-use-terrafrom-20220304
. O nome do bucket deve ser único na AWS. Sugiro de digite o código abaixo no arquivo configuration.tf
fornencendo a Access Key, Secret Key, região e o nome do Bucket (eu sei que vai copiar em colar)
#Define keys and region
provider "aws" {
access_key = "YOUR-ACCESS-KEY"
secret_key = "YOUR-SECRET-KEY"
region = "us-west-2"
}
#Define ec2 instance
resource "aws_instance" "instance1" {
ami = "ami-089668cd321f3cf82"
instance_type = "t2.micro"
tags = {
Name = "ubuntu-20.04"
}
}
#Define s3 bucket
resource "aws_s3_bucket" "bucket1" {
bucket = "bucket-launched-using-terrafrom-20210106"
acl = "private" # or can be "public-read"
tags = {
Name = "Bucket"
Environment = "Production"
}
}
Agora vamos inicializar, planejar e executar nosso código.
A inicializar o terraform ele fará a configuração necessária, já o planejamento é como nós vamos ver o que vai acontecer na realidade, ele também descobrirá erros de sintaxe. E, por fim, implantará o código na nuvem. Para isso vamos executar o seguinte comando um por um.
Seguindo o fluxo vamos a inicialização do terraform que fará a configuração necessária. Para isso precisaremos executar o seguinte comando:
$ terraform init
Temos que executar o planejamento que é como vamos ver o que vai acontecer na realidade e como dito, também descobrirá seu erro de sintaxe.
$ terraform plan
e por último mas não menos importante vem aplicação que significa que implantaremos o código na nuvem. Vamos fazer isso apenas executando o comando:
$ terraform apply
Ele nos pedirá confirmação, e basta digitar "sim" e pressionar o enter para poucos segundos depois nossa infraestrutura estará pronta. Agora podemos fazer login no console AWS e ir para o serviço EC2
E encontraremos o EC2 é funcionando. Da mesma forma, podemos para S3 e procure o nosso Bucket:
Destruindo a estrutura
Se quiser destruir a infraestrutura acima, podemos simplesmente digitar terraform destroy
:
$ terraform destroy
Ele vai solicitar umaa confirmação e basta apenas dizer sim e pressione enter. A instância EC2 e o Balde S3 que criamos acima devem ser removidos de nossa conta AWS. Mas por via das dúvidas é bom verificarmos fazendo login no console AWS.
Fontes onde pesquisei esse conteúdo:
Top comments (0)