Skip to content

CarlosAlmeida1/Atividade---AWS---Docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Documentação

📝 Sobre o projeto

Fluxo do Projeto

Este projeto é desenvolvido com o intuito de criar uma infraestrutura na AWS utilizando uma VPC, Subnets, Security Groups, EC2, RDS, Load Balancer, EFS, Bastion Host e Auto Scaling Group.


Passo a passo para execução do projeto

Pré-requisitos


Iniciando Implantação do Laboratório

☁ Criando a infraestrutura na AWS

1. Primeiro passo é iniciar a criação da VPC e Subnets

Criação da VPC

Na imagem acima, é possível visualizar a criação de uma VPC.

Configurações: (Você pode colocar a configuração que desejar, abaixo está a configuração que foi utilizada nesse laboratório)

  • Nome: wordpress-vpc
  • CIDR Block: 10.0.0.0/16
  • IPv4 CIDR Block: No IPv4 CIDR Block
  • Tenancy: Default
  • Número de AZs: 2 (us-east-1a, us-east-1b)
  • Número de subnets públicas: 2
  • Número de subnets privadas: 2
  • NAT Gateway: none
  • VPC Endpoints: S3

VPC Criada

Na imagem acima, a VPC foi criada com sucesso.


2. Criando EFS

Criação do EFS

Clicando em Create file system, é possível visualizar a criação de um EFS.

Dê um nome ao EFS e selecione a VPC criada no passo 1 wordpress-vpc.

Criação do EFS

Na imagem acima, é possível visualizar a criação de um EFS.


3. Criando Security Groups

Criação do Security Group

Na imagem acima, é possível visualizar a criação de um Security Group.

Configurações:

O primeiro SG será privado:

  • Nome: wordpress-privado-sg
  • Descrição: Security Group para instâncias privadas
  • Regras de entrada:
    • Type: SSH
    • Protocol: TCP
    • Port Range: 22
    • Source: 0.0.0.0/0

    • Type: HTTP
    • Protocol: TCP
    • Port Range: 80
    • Source: security group publico

    • Type: MySQL/Aurora
    • Protocol: TCP
    • Port Range: 3306
    • Source: 0.0.0.0/0

    é muito importante que a porta 3306 esteja aberta para que a instância privada consiga se comunicar com o RDS.


    • Type: HTTPS
    • Protocol: TCP
    • Port Range: 443
    • Source: security group publico

O segundo SG será público:

  • Nome: wordpress-publico-sg
  • Descrição: Security Group para instâncias públicas
  • Regras de entrada:
    • Type: SSH
    • Protocol: TCP
    • Port Range: 22
    • Source: Anywhere IPv4

    • Type: HTTP
    • Protocol: TCP
    • Port Range: 80
    • Source: 0.0.0.0/0

4. Criando RDS

Agora com todos os passos anteriores realizados, vamos criar o RDS, que será o banco de dados utilizado pelo Wordpress.

Criação do RDS

Na imagem acima, é possível visualizar a criação de um RDS.

Selecionar o banco de dados MySQL.

Configurações:

  • Engine options: MySQL
  • Version: MySQL 8.0.25
  • Templates: Free tier
  • Settings:
    • DB instance identifier: wordpress-db
    • Master username: admin
    • Master password: exemplosenha
  • DB instance size: db.t2.micro
  • Storage: 20 GB
  • Connectivity:
    • VPC: wordpress-vpc
    • Subnet group: wordpress-private-subnet-group
    • Publicly accessible: No
    • VPC security group: wordpress-sg
  • Additional configuration:
    • Initial database name: wordpress
  • Desabilitando checks para evitar custo adicional.

Após a criação, é possível visualizar o endpoint do banco de dados.

Esse endpoint será utilizado para configurar o Wordpress.

No docker-compose.yml, é necessário alterar o endpoint, o nome do banco de dados, usuário e senha.

Acessando a EC2 e criando um banco chamado wordpress e alterando dentro do docker compose.


5. Criando NAT Gateway

Criação do NAT Gateway

Para a instância privada acessar a internet, é necessário criar um NAT Gateway.

Configurações: (Esse NAT Gateway será associado na subnet privada conforme o nome abaixo do laboratório)

  • Nome: wordpress-nat-gateway
  • Subnet: wordpress-public-subnet-a e wordpress-public-subnet-b
  • Elastic IP: Create new EIP

Após a criação, é necessário configurar a rota na tabela de rotas da VPC.

Coloque o NAT Gateway como destino e a Internet Gateway como alvo na tabela de rotas da subnet privada

Configuração do NAT Gateway

Após a configuração, é possível acessar a instância privada e instalar o Docker e o Docker Compose.


6. Criando EC2 e Bastion Host

Criação da EC2

Na imagem acima, é possível visualizar a criação de uma EC2.

A primeira EC2 será o Bastion Host.

Configurações:

  • AMI: Amazon Linux 2023
  • Instance type: t2.micro
  • Network: wordpress-vpc
  • Subnet: wordpress-public-subnet-a
  • Auto-assign Public IP: Enable
  • Security Group: wordpress-publico-sg
  • Key pair: wordpress-key-pair
  • user data (Opcional), desejado apenas nas máquinas privadas (passo abaixo).

Você pode acessar a sua bastion host através do console AWS ou através da chave .pem do Bastion Host. (wordpress-key-pair)

Criação do Bastion Host

A segunda EC2 será a instância privada.

Configurações:

  • AMI: Amazon Linux 2023
  • Instance type: t2.micro
  • Network: wordpress-vpc
  • Subnet: wordpress-private1-subnet-a
  • Auto-assign Public IP: Disable
  • Security Group: wordpress-privado-sg
  • Key pair: wordpress-key-pair
  • user data

A terceira EC2 será a instância privada.

Configurações:

  • AMI: Amazon Linux 2023
  • Instance type: t2.micro
  • Network: wordpress-vpc
  • Subnet: wordpress-private2-subnet-b
  • Auto-assign Public IP: Disable
  • Security Group: wordpress-privado-sg
  • Key pair: wordpress-key-pair
  • user data

O user data é um script que será executado na inicialização da instância.

#!/bin/bash
 
sudo yum update -y
sudo yum install -y docker
 
sudo systemctl start docker
sudo systemctl enable docker
 
sudo usermod -aG docker ec2-user
newgrp docker
 
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
 
sudo chmod +x /usr/local/bin/docker-compose
 
sudo mkdir /app
 
cat <<EOF > /app/compose.yml
services:
 
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_HOST: projeto-wordpress-db.czwaygssin91.us-east-1.rds.amazonaws.com
      WORDPRESS_DB_USER: admin
      WORDPRESS_DB_PASSWORD: 12072006
      WORDPRESS_DB_NAME: admin
    volumes:
      - /mnt/efs:/var/www/html
EOF

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-01e562587e1798162.efs.us-east-1.amazonaws.com:/ /mnt/efs
 
docker-compose -f /app/compose.yml up -d
 

Após a criação, é necessário acessar a instância Bastion Host e configurar o acesso à instância privada.

Para acessar o Bastion Host é necessário colocar o sg-privado como rota de entrada de SSH como anywhere IPv4.


7. Criando Load Balancer e Auto Scaling Group

Criação do Auto Scaling Group

Configurações do Auto Scaling Group:

  • Nome: wordpress-asg
  • Launch configuration: wordpress-launch-config
  • Min size: 1
  • Max size: 3
  • Desired capacity: 1
  • Health check type: EC2
  • Health check grace period: 300
  • Target group: wordpress-tg
  • Availability Zones: us-east-1a, us-east-1b

Com essas configurações, o auto scaling group será criado com sucesso.


Criação do Load Balancer para ter acesso ao Wordpress usando as instâncias privadas e disponibilizando o acesso via navegador.

Criação do Load Balancer

Na imagem acima, é possível visualizar a criação de um Load Balancer.

Configurações:

  • Nome: wordpress-lb
  • Scheme: internet-facing
  • VPC: wordpress-vpc
  • Availability Zones: us-east-1a, us-east-1b public subnet
  • Listeners:
    • Protocol: HTTP
    • Port: 80

Conforme explicado acima, o Load Balancer será criado com o protocolo HTTP e a porta 80.

Configuração do Load Balancer

Health checks:

  • Protocol: HTTP
  • Path: /wp-admin/install.php

O Load Balancer precisa estar vinculado com a instância EC2 para que o health check funcione, sem isso o Load Balancer não passará pelo health check.

Load Balancer em serviço

Load Balancer criado com sucesso e em serviço, passando pelo health check.


Conclusão

Acesso ao Wordpress

Acessando o Wordpress através do DNS do Load Balancer.

Wordpress Logado

Wordpress acessado com sucesso.


Autoria

Este projeto foi desenvolvido por Carlos Henrique . Atribuído pela Compass.Uol e orientado por Thiago Geremias de Oliveira.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages