Skip to content

Ambiente Docker Swarm provisionado dentro da AWS utilizando Terraform e Ansible.

Notifications You must be signed in to change notification settings

alexandremjcastro/docker-swarm-aws

Repository files navigation

Provisionamento de ambiente Docker Swarm na AWS utilizando Terraform e Ansible

Ferramentas

  • Cluster Docker Swarm multi manager no Ubuntu 20.04.
  • Provisionamento de ambiente na AWS (VPC,EC2,ELB,EFS) com Terraform.
  • Instalação, configuração e deploy do cluster e aplicação com Ansible
  • Uso do EFS para persistencia de dados e configuração.
  • Traefik como proxy reverso junto com ELB para Load Balance.

Pré-requisitos

Para executar o projeto, você precisará ter as ferramentas "awscli", "terraform" e "ansible" instaladas e configuradas no sistema.

Executando

  1. Para iniciar, primeiro clone este repositório:
git clone https://github.com/alexandremjcastro/docker-swarm-aws.git
  1. Após o clone é necessário preencher alguns campos com as informações do seu ambiente AWS dentro do arquivo backend.tf. O arquivo terraform.tfvars possui variáveis que também precisam ser preenchidas para prosseguir com o provisionamento sem erros.

  2. Dentro do diretório raiz do projeto, execute os comandos Terraform:

terraform init
terraform plan
terraform apply --auto-approve
  1. Após o Terraform finalizar a execução de todos passos, será exibido na tela o DNS Name do ELB. É necessário criar um CNAME dentro do seu domínio externo apontando para o endereço do ELB. Com isso será possível acessar as aplicações balanceadas pelo ELB através do seu domínio.

  2. Para executar os playbooks do ansible, primeiramente preencha os valores das variáveis dentro do arquivo ansible/roles/deploy-stack/vars/main.yml.

  3. Após preenchimento de todas variáveis, retorne até o diretório ansible e execute os playbooks com o comando: ansible-playbook -i hosts main.yml.

ansible-playbook -i hosts main.yml

Não se preocupe em configurar o arquivo hosts, ele é criado e configurado automaticamente após a execução bem sucedida do terraform.

  1. Assim que o ansible finalizar a execução dos playbooks, conecte ao nó manager principal (IP localizado dentro do arquivo hosts). Se todos os playbooks foram executados com sucesso, é possível visualizar os services provisionados dentro do cluster com o comando: docker service ls

  2. Após a validação que todos serviços estão ok, é possível acessar a URL configurada dentro do arquivo ansible/roles/deploy-stack/vars/main.yml com o path /index.php. Exemplo: dominio.exemplo.com/index.php

About

Ambiente Docker Swarm provisionado dentro da AWS utilizando Terraform e Ansible.

Resources

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published