Skip to content

Provisionamento de infraestrutura e deploy de aplicação Strapi na AWS com Terraform, Ansible

Notifications You must be signed in to change notification settings

tpaphysics/aws-infra-cms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Criação de infraestrutura e deploy do Strapi CMS na AWS

AWS EC2 AWS S3 AWS RDS AWS CloudFront

Terraform Ansible Docker Swarm

Introdução

Esta pipeline provisiona a infraestrutura e realiza o deploy de uma aplicação Strapi na AWS utilizando Terraform, Ansible e Docker Swarm. A infraestrutura inclui instâncias EC2, RDS, S3 e CloudFront. Além disso, utilizamos Traefik como load balancer, proxy reverso com certificado SSL gratuito emitido pelo Let's Encrypt e dimínio dinâmico criado pelo DuckDNS.

Pré-requisitos

  1. Renomeie .env.example para .env, env.example.tf para variables.tf e o vars.example.yml para vars.yml.
  2. Configure um usuário IAM com acesso programático com as seguintes permisões:
    "Action": [
    "s3:PutObject",
    "s3:GetObject",
    "s3:ListBucket",
    "s3:DeleteObject",
    "s3:PutObjectAcl"
    ],
  3. Obtenha as chave de acesso e secret key do usuário IAM.
  4. Instale e configure o AWS CLI.
  5. Instale o Terraform e Ansible.
  6. Obtenha o token e subdomínio no duckdns.

Configuração

Configure as credenciais do AWS CLI:

aws configure

Para acesso SSH à instância EC2, indique a chave pública em /terraform/variables.tf:

resource "aws_key_pair" "terraform-key" {
  key_name   = "terraform-key"
  public_key = file("~/.ssh/id_rsa.pub")
}

Start:

./start.sh

Destroy:

./destroy.sh

Notas:

O objetivo foi provisionar infraestrutura simples e de baixo custo, utilizando serviços gratuitos da AWS. DNS dinâmico criado pelo DuckDNS, juntamente com um certificado SSL gerado pelo Let's Encrypt de forma gratuíta. A aplicação possui 2 réplicas do Strapi, 1 réplica do Traefik e 1 réplica do duckdns. Utiliza 1 instância EC2 t2.micro, 1 instância RDS db.t3.micro, 1 bucket S3, 1 distribuição CloudFront. O bucket S3 é privado e assível apenas pelo CloudFront que atua como CDN diminuindo os custos de transferência de dados do bucket S3 para a internet.

About

Provisionamento de infraestrutura e deploy de aplicação Strapi na AWS com Terraform, Ansible

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published