24 de junho de 2020 • 3 min de leitura
Criando uma instância EC2 usando Terraform
O Terraform é uma das ferramentas de infraestrutura muito popular e um dos produtos da HashiCorp
O Terraform é uma ferramenta para construir, alterar e criar versões de infraestrutura com segurança e eficiência. O Terraform pode gerenciar provedores de serviços existentes e populares, bem como soluções personalizadas internas.
Os arquivos de configuração descrevem para Terraform os componentes necessários para executar um único aplicativo ou todo o seu datacenter. O Terraform gera um plano de execução descrevendo o que fará para atingir o estado desejado e, em seguida, executa-o para construir a infraestrutura descrita. À medida que a configuração muda, o Terraform pode determinar o que mudou e criar planos de execução incrementais que podem ser aplicados.
A infraestrutura que o Terraform pode gerenciar inclui componentes de baixo nível, como instâncias de computação, armazenamento e rede, além de componentes de alto nível, como entradas DNS, recursos SaaS, etc.
Indo direto ao ponto, realizaremos a criação de uma instância free tier na AWS. Mas antes disso é necessário saber os principais comandos do Terraform:
terraform init
: baixa os plugins necessários para executar o código.terraform plan
: mostra o plano de ação que o Terraform irá realizar na infra.terraform apply
: executa todo o plano de ação configurado.terraform destroy
: irá destruir tudo que foi aplicado no provider.
Instalando Terraform:
Para fazer a devida instalação basta clicar aqui e selecionar a sua distro, neste caso vou usar o Linux.
Com o download feito, vamos a configuração:
- Instale o pacote unzip:
sudo apt-get install unzip
- Descompate e mova o binário para o diretório `/usr/local/bin`:
unzip terraform_0.12.26_linux_amd64.zip
sudo mv terraform /usr/local/bin/
- Feito isso, para testar executamos o comando abaixo:
terraform --version
Criação de usuário na AWS
Para que possamos criar os nossos recursos será necessário criamos o nosso usuário na AWS, para isso basta seguir os passos da documentação .
Todos o processo abordado aqui poderá ser feito utilizando a conta free tier da AWS, sem envolver nenhum tipo de custo.
Com o usuário criado e aplicado a um grupo de acesso, salve o seu ID e Chave pois será utilizado pelo Terraform para se autenticar com o seu provider.
Configurando credenciais
Para configurar as suas credenciais é bastante simples, você pode fazer isso instalando o AWS cli ou criando um arquivo qualquer na sua máquina e adicionar as seguintes informações:
[default]
aws_access_key_id = SUA_KEY
aws_secret_access_key = SUA_SECRET_KEY
Configuração da instância
Criaremos um arquivo chamado main.tf
no qual será feito as configurações da instância que desejamos subir, observe o arquivo logo abaixo:
provider "aws" {
region = "us-east-1"
shared_credentials_file = "/home/thiago/.aws/credentials"
profile = "default"
}
resource "aws_instance" "Teste" {
ami = "ami-01d025118d8e760db"
instance_type = "t2.micro"
key_name = "Thiago"
tags = {
Name = "lab-terraform-tst"
}
}
No arquivo acima descrevemos o nosso provider sendo aws
repassando as nossas credenciais, profile e região. Em seguida descrevemos como será configurada a nossa instância, foi escolhida uma ami do Amazon Linux, na família "t2.micro" elegível para free tier, assimilando a minha chave de acesso ( Já existente na AWS ) e por fim declarando o seu Nome para lab-terraform-tst
.
Iniciando o terraform
Feito toda a configuração, prepararemos o nosso diretório usando o comando terraform init
para realizar o download dos plugins da AWS. Você verá que tudo deu certo caso tenha essa mensagem durante o retorno:
Terraform has been successfully initialized!
Agora executaremos o comando terraform plan
. Isso nos permitirá ver o plano de ação que o Terraform fará antes de decidirmos definir a infra, esse comando pode demorar um pouco, verifique se as informações seguem de acordo com o planejado nos arquivos, no fim o seu plan deve ter algo semelhante a esse.
Plan: 1 to add, 0 to change, 0 to destroy.
Sabendo tudo que o Terraform vai fazer podemos partir para a criação, executamos o comando terraform apply
:
# terraform apply
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Plan: 1 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
aws_instance.Teste: Creating...
aws_instance.Teste: Still creating... [10s elapsed]
aws_instance.Teste: Still creating... [20s elapsed]
aws_instance.Teste: Still creating... [30s elapsed]
aws_instance.Teste: Still creating... [40s elapsed]
aws_instance.Teste: Creation complete after 40s [id=i-0f7e4c2a21bf6949c]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Se formos para o console da AWS, podemos ver que uma instância t2.micro foi criada usando o Terraform:
Para evitar cobranças, por se tratar de um ambiente de lab execute o comando terraform destroy
para remover tudo o que foi criado durante esse artigo.
Esse artigo cobre apenas o básico sobre a criação de uma instância, indico que veja a documentação para algo mais elaborado, como criação/atribuição de security groups, vpc's, etc.
Fontes: terraform, aws_provider, aws_instance.