alejunio / Terraform-Ansible-Vultr-WordPress

Automação de Infraestrutura para Hospedagem WordPress com Terraform, Ansible e Vultr. Seguindo modelo de Infraestrutura como Código (IaC).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🚀 Automação Infraestrutura WordPress na Vultr com Terraform e Ansible

alt text

Infraestrutura como código (IaC) é uma realidade atualmente, e vem para ajudar a acelerar os processos na criação e configuração de ambientes de infraestrutura. Quando unimos o Terraform(automacao infra) com Ansible(automacao configuracões), temos uma solução perfeita! Podemos criar ambientes de hospedagem de forma rápida e fácil.

Objetivo do Projeto

O objetivo do projeto é automatizar tudo, desde a criação do servidor, configuração do servidor e também configuração do DNS na plataforma da Vultr.

Arquitetura do Projeto

A imagem abaixo representa como organizamos o projeto.

alt text

Pré Requisitos

A Stack está funcional seguindo os requisitos abaixo:

ns1.vultr.com \ ns2.vultr.com

Preparando o Ambiente (Seu Computador)

Para executar a Stack você vai precisar executar os passos abaixo. "Desconsidere caso já tenha feito algum passo".

1) Download do pacote Terraform

Faça o download do pacote referente ao sistema operacional que você utiliza.

2) Download do Projeto

Você pode realizar o download da Stack através do link:

Configurações na Stack

Após realizar o download do repositório, recomendo utilizar algum editor como o Notepad++, VSCode ou algum de sua preferência para configurar a Stack.

Arquivos de Configuração Terraform

Você deve realizar configuracoes nos arquivos abaixo:

  • main.tf

No campo de chave SSH, insira o conteúdo em texto da sua chave pública.

  • variable.tf

No arquivo variable.tf você vai configurar a chave de API da Vultr, e o domínio do site que você quer configurar.

Arquivos de Configuração Ansible

Você não pode esquecer de configurar também o Ansible. Ainda não encontrei uma maneira de integrar as variáveis do terraform ao ansible, então vocês devem configurar também as variáveis do Ansible. Caso contrário terá problemas!

No diretorio do Ansible temos todas as roles responsáveis pela configuração interna do servidor.

  • /ansible/mysql
  • /ansible/nginx
  • /ansible/php
  • /ansible/ssl-certbot
  • /ansible/wordpress

O playbook "chama" todas essas roles para que tudo seja configurado (PHP,MySQL,Nginx,SSL, etc). No entanto, você precisa ajustar variáveis importantes, veja abaixo as principais.

Edite o arquivo de variaveis:

  • /ansible/vars/vars.yaml
 db_user:  
 db_user_password:
 db_name: 
 dominio_site: 
 email: 

Deploy da Stack

Após ter ajustado todas as configurações necessárias para o funcionamento da stack e ter configurado o DNS do seu domínio apontando para a Vultr, você poderá executar a stack para criar o ambiente.

Para executar a stack, abra o terminal (cmd, shell, etc) e navegue até a pasta do projeto que você fez o download. Exemplo abaixo: alt text

O comando abaixo irá inicializar o terraform realizando o download de todos os módulos necessários para o deploy da stack.

 terraform init 

O comando abaixo realiza todo o "mapeamento" do que será implementado, e caso tenha algum bug ou alguma configuração errada, você verá vários alertas em vermelho.

 terraform plan

O comando abaixo irá realizar o deploy da infraestrutura, eu estimo que demore cerca de 5/9 minutos.

 terraform apply -auto-approve

Após finalizar o deploy, você verá uma mensagem similar/igual a essa abaixo: alt text

Atenção

A Stack está funcional, mas ainda está em desenvolvimento. Ideias e planos para a Stack:

Ansible

  • Nginx [ 1.14 ]
  • PHP [ 7.2 ]
  • MySQL [ 5.76 ]
  • SSL Certbot Let's Encrypt
  • Ioncube
  • Composer
  • Secrets Ansible Vault

Terraform

  • Variaveis compartilhaveis com Ansible e vice versa

About

Automação de Infraestrutura para Hospedagem WordPress com Terraform, Ansible e Vultr. Seguindo modelo de Infraestrutura como Código (IaC).

License:MIT License


Languages

Language:HTML 39.4%Language:Shell 35.7%Language:HCL 24.6%Language:PHP 0.3%