fbpx

IaC ( Infraestrutura como código ) , na minha opinião é algo que se tornou uma filosofia. Pois revoluciona completamente a forma de trabalharmos, principalmente nós que somos administradores de servidores e infraestrutura.

Quando montamos uma IaC, estamos projetando um modelo de serviço a ser provisionado, tanto em termos de hardware quanto serviços “softwares” muitas das vezes. E é normal usarmos tecnologias como Terraform, Ansible, Puppet e outros para provisionar nossos serviços e aplicações.

Nesse artigo irei apresentar um modelo de IaC focada em WordPress na AWS. O objetivo é automatizar tudo! Desde a criação do servidor, configuração de DNS e configuração do servidor com os serviços do WordPress.

Requisitos

  • Terraform baixado na máquina local
  • Credenciais de Acesso AWS

Link Download do Terraform: https://www.terraform.io/downloads.html

Stack Amazon AWS: Automação Servidor WordPress

Nota: Credenciais de Acesso

Para que possamos configurar nosso ambiente na Amazon AWS, precisamos ter em mãos as credenciais de acesso. Através dessas credenciais vamos conseguir executar nossa Stack.

Antes de qualquer coisa, vamos gerar nossas credenciais de acesso na AWS. Você deve ter uma conta válida na AWS caso contrário não poderá seguir em frente.

Clonando Stack

Em sua máquina local você pode realizar o download do nosso repositório, basta acessar a URL abaixo:

https://github.com/alejunio/terraform-ansible-aws-wordpress/archive/refs/heads/main.zip

Caso tenha acesso a um terminal com o git instalado na máquina, basta executar o comando:

git clone https://github.com/alejunio/terraform-ansible-aws-wordpress.git projeto && cd projeto

Configurando Variáveis Terraform

Para quem não conhece o Terraform, usamos um arquivo para definir todas as variáveis. Isso é muito útil quando estamos configurando servidores e até mesmo registros de DNS.

Inclusive, nessa Stack eu assumo que você tenha configurado previamente seu domínio no Route53 que é o serviço de DNS na AWS. Pois é certo de que você vá adicionar registros de e-mail, ftp, e outros serviços que não tem relação com a nossa Stack.

O arquivo ariable.tf , é o arquivo que iremos editar.

# Tokens Access AWS
variable "access-key" {
  description = "access key"
  default     = "access-aqui"
}
variable "secret-key" {
  description = "secret key"
  default     = "secret-aqui"
}

# Zone DNS AWS
variable "zone_dns" {
  default     = "digite-aqui"
}

# Dominio DNS
variable "dns_domain" {
  default     = "exemplo.com"
}

Você deve inserir as credenciais de acesso da AWS nas suas respectivas variáveis, também deve configurar as variáveis de DNS e domínio.

Para descobrir o valor da zone_dns basta seguir os passos abaixo na AWS:

  1. Acesse a console na AWS responsável pelo Route53 https://console.aws.amazon.com/route53/v2/home#Dashboard
  2. Copiar o ID de Zona Hospedada do seu domínio
id zona aws

Você vai copiar esse código e colocar na variável zone_dns. Mas não copie o código dessa imagem, você deve copiar o código da zona do seu domínio em sua conta da AWS.

Configurando Variáveis Ansible

O Ansible também possui seu arquivo de variáveis, e é preciso ajusta-lo também.

O caminho para o arquivo é: /projeto/ansible/vars/vars.yml

# Var - MySQL
db_user: user
db_user_password: 654321
db_name: db-default
mysql_root_password: senharoot

# Var - Nginx e Site
dominio_site: exemplo.com.br
diretorio_site: /var/www/{{ dominio_site }}/public_html
email: [email protected]

# Var - SSL
diretorio_ssl: /etc/letsencrypt/{{ dominio_site }}

Edite todas as variáveis do MySQL, domínio do seu site e email.

Gerando Chaves SSH

Também precisamos gerar nosso par de chaves SSH, não só para configurar no nosso servidor EC2 como também para que o Terraform consiga conectar no servidor e instalar os serviços.

Você vai gerar o par de chaves e armazenar no diretório ssh do seu projeto, tanto a pública quanto a privada.

Site: https://www.ssh.com/ssh/putty/windows/puttygen/

ssh 0101 1

Abra o arquivo main.tf e corrija o nome da chave, inserindo o nome da chave pública que você configurou.

terrraform aw 01

Também corrija o nome da chave privada no arquivo deploy-ansible.tf .

terrraform aw 02

Após realizar essas tarefas podemos dar início ao deploy.

Deploy da Stack

Agora que temos os arquivos configurados, podemos dar início ao deploy para que nosso servidor de hospedagem wordpress na aws seja configurado.

É de suma importância que você consiga abrir um terminal, ou até mesmo o CMD do Windows, para acessar a pasta do projeto.

Para realizar o deploy, esteja com o terminal aberto diretamente na pasta do projeto, em seguida digite os comandos abaixo em sequência:

terraform init
terraform apply -auto-approve 

Feito isso, todo o processo de criação do servidor na AWS e configuração dos serviços para que o WordPress funcione, será realizado.

Ao final do processo, você verá uma mensagem como essa abaixo:

terrraform aw 03

Atenção: Destruindo a Infraestrutura

Se deseja por algum motivo remover os servidores e todos os serviços que executou, execute o comando: terraform destroy -auto-approve

Conclusão: Stack Terraform WordPress (IaC)

Esse modelo de implantação pode ser usado em vários projetos na AWS, e você tem o controle de toda a infraestrutura a partir dos códigos dessa IaC.

Logo menos irei lançar novas funcionalidades como: acesso ftp, backups no s3 e outros.

Links

Click to rate this post!
[Total: 2 Average: 5]

Escreva um comentário