Este repositório contém um exemplo prático de como criar um ambiente na AWS com instâncias EC2 utilizando o Terraform. O projeto demonstra como configurar e provisionar infraestrutura na AWS de forma automatizada, com foco em boas práticas de DevOps e infraestrutura como código.
O objetivo deste projeto é criar um ambiente com três instâncias EC2 (Elastic Compute Cloud) utilizando o Terraform. Nosso foco será a utilização do Terraform para provisionar a infraestrutura, então não abordaremos em detalhes a criação de uma conta AWS ou a configuração de chaves de acesso.
O projeto inclui um pipeline de CI/CD configurado com GitHub Actions para automatizar a execução de comandos Terraform, facilitando a criação e destruição de recursos na AWS.
|
Lucas C Alecrim |
Antes de começar, você precisará de:
- Uma conta AWS ativa.
- AWS CLI instalado e configurado para permitir o acesso ao console AWS a partir do seu ambiente local.
- Terraform instalado no seu ambiente local.
Siga as instruções para instalar e configurar o AWS CLI no seu sistema operacional:
Você pode instalar o Terraform seguindo as instruções disponíveis no site oficial:
Configuração do AWS CLI: Após instalar o AWS CLI, configure-o para acessar sua conta AWS:
aws configure- Inicializar o Terraform: Este comando inicializa o diretório do Terraform e baixa os plugins necessários.
- Utilizei uma chave publica para iniciar o projet, caso tenha alguma de como criar Segue um passo a passo Basico - Guia de instalação do SSH meu conselho é ter um WSL pois no ubuntu é bem mais simples configurar, depois de configurar uma SSH publica ou privada basta apenas exportar para o par de chaves na AWS
- depois é so confirar no main.tf qual o ssh que vai ser usado
resource "aws_instance" "estudos" {
count = 3
ami = "ami-0c5410a9e09852edd"
// qual o Sistema operaciona, nesse caso foi o ubuntu
instance_type = "t2.micro"
key_name = "UbuntuWSL-pub" // aqui
tags = {
Name = "Ec2-${count.index}" // nome + contador para melhorar a identificação
}
}- Nesse caso aws-terraform\ec2
terraform init- Verificar o plano de execução: Antes de aplicar as mudanças, você pode verificar o que será criado, modificado ou destruído.
terraform plan- Aplicar a configuração: Para criar as instâncias EC2 conforme definido no arquivo main.tf
terraform apply- Você será solicitado a confirmar a execução. Digite "yes" para prosseguir.
Após concluir seus testes ou experimentos, é importante destruir a infraestrutura criada para evitar cobranças desnecessárias na sua conta AWS. Para isso, execute:
terraform destroy- Você também será solicitado a confirmar a ação. Digite "yes" para prosseguir.
Neste projeto, utilizamos o GitHub Actions para implementar um fluxo de trabalho de CI/CD que automatiza o processo de criação e gerenciamento de instâncias EC2 na AWS utilizando o Terraform. Essa abordagem proporciona eficiência, consistência e segurança no gerenciamento da infraestrutura.
O workflow do GitHub Actions está configurado para ser acionado em eventos de push na branch principal do repositório. Isso significa que sempre que novas alterações são enviadas para a branch principal, o workflow será executado automaticamente.
O fluxo de trabalho é dividido em várias etapas, cada uma com uma função específica:
-
Check out do Código: A primeira etapa usa a ação
actions/checkout@v2para baixar o código do repositório. Isso é necessário para que as etapas subsequentes possam acessar o código e os arquivos de configuração do Terraform. -
Configuração do Terraform: Utiliza-se a ação
hashicorp/setup-terraform@v1para instalar a versão especificada do Terraform. Isso garante que o ambiente esteja preparado para executar os comandos do Terraform. -
Inicialização do Terraform: A etapa
terraform initinicializa o diretório do Terraform, baixando os provedores necessários e preparando o ambiente para a execução dos comandos de configuração. -
Planejamento do Terraform: A etapa
terraform plané executada para criar um plano de execução, onde o Terraform determina quais mudanças serão aplicadas na infraestrutura. Essa etapa verifica se todas as configurações estão corretas e se as credenciais da AWS estão disponíveis. -
Aplicação do Terraform: Finalmente, a etapa
terraform apply -auto-approveaplica as mudanças necessárias para criar ou atualizar a infraestrutura na AWS. A opção-auto-approveé utilizada para evitar a necessidade de confirmação manual, permitindo que a aplicação ocorra automaticamente.
As credenciais necessárias para acessar a AWS (como AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY) são armazenadas de forma segura como Secrets no repositório do GitHub. Essas variáveis de ambiente são referenciadas no workflow, garantindo que as credenciais não sejam expostas no código.
-
Automação Total: Cada alteração no código resulta automaticamente na criação ou atualização da infraestrutura, reduzindo o tempo de espera entre desenvolvimento e implantação.
-
Detecção Precoce de Erros: Qualquer problema na configuração do Terraform ou na conectividade com a AWS é detectado rapidamente durante a execução do workflow, permitindo correções antes que o código seja implantado.
-
Rastreabilidade: Todas as mudanças na infraestrutura são documentadas através dos commits e logs do GitHub Actions, proporcionando uma trilha de auditoria clara sobre quem fez o quê e quando.
-
Facilidade de Colaboração: A equipe pode colaborar de forma mais eficaz, sabendo que as implantações e atualizações são gerenciadas de forma padronizada e automatizada.
- Destroi de maneira "Manual"
Esse projeto está licenciado sob a Licença MIT! Veja o arquivo LICENSE para mais detalhes.



