Implantação simplificada do WordPress com Docker e Ansible: Guia passo a passo
A implantação do WordPress pode ser uma tarefa um pouco demorada, desde a configuração do servidor web até a instalação do banco de dados, há vários passos envolvidos. Mas e se fosse possível simplificar todo esse processo usando um container Docker e uma ferramenta de automação de TI? É exatamente isso que vamos explorar neste post!
Neste projeto, usaremos o Ansible, uma ferramenta de automação de TI bem popular, para implantar um container Docker com o WordPress e um banco de dados MySQL. Vamos criar uma playbook Ansible que irá automatizar todo o processo de instalação, desde a criação dos diretórios necessários até a execução do container WordPress.
O objetivo deste simples projeto é mostrar como a automação pode ser uma poderosa ferramenta para simplificar a implantação de aplicativos, como o WordPress. Ao final do projeto, você terá um ambiente de desenvolvimento WordPress pronto para uso, com as dependências instaladas em um container Docker e gerenciadas pelo Ansible.
Se você é novo no Ansible ou em Docker, não se preocupe! Este projeto tem como objetivo ser simples e fácil de entender, mesmo para iniciantes.
Então, vamos começar!
Projeto ├── playbook.yml └── templates/ └── docker-compose.yml.j2
O arquivo de playbook que vamos criar é um arquivo YAML que contém todas as tarefas necessárias para implantar o WordPress em um container Docker. Ele é executado pelo Ansible, uma ferramenta de automação de TI que simplifica a configuração e gerenciamento de servidores.
Ao executar o arquivo de playbook, o Ansible seguirá todas as tarefas na ordem em que são especificadas. Primeiro, ele irá verificar se todas as dependências necessárias estão instaladas no sistema. Em seguida, criará os diretórios necessários para armazenar os arquivos de configuração do WordPress e do MySQL. Após estes passos, o Ansible irá baixar as imagens Docker para o WordPress e para o banco de dados MySQL, criará um arquivo docker-compose.yml que especifica como o container Docker deve ser executado e, em seguida, iniciará o container.
Uma vez que o container está em execução, o WordPress poderá ser acessado através de um navegador da web, permitindo que você configure e personalize sua instalação do WordPress por meio da interface gráfica.
O arquivo de playbook que criamos é muito útil porque permite que você implante o WordPress em um container Docker de maneira rápida e fácil, eliminando a necessidade de configurar manualmente um servidor web e um banco de dados. Além disso, o uso do Ansible simplifica ainda mais o processo, permitindo que você execute a implantação de maneira consistente e confiável em diferentes servidores e sistemas operacionais.
Aqui está a nossa playbook do projeto:
---
- name: Instalação do WordPress em um container Docker
hosts: localhost
become: yes
vars:
wordpress_port: 8080
wordpress_data_dir: /srv/wordpress
mysql_password: 4labsPassword
tasks:
- name: Instalação do Docker
apt:
name:
- docker.io
- docker-compose
state: present
- name: Criação do diretório para dados do WordPress
file:
path: "{{ wordpress_data_dir }}"
state: directory
mode: '0755'
- name: Configuração do firewall
ufw:
rule: allow
port: "{{ wordpress_port }}"
proto: tcp
- name: Criação do arquivo docker-compose.yml
template:
src: templates/docker-compose.yml.j2
dest: "{{ ansible_env.HOME }}/docker-compose.yml"
remote_src: yes
- name: Execução do container WordPress
docker_compose:
project_src: "{{ ansible_env.HOME }}"
project_name: wordpress
state: present
recreate: always
Vamos para a explicação:
- name – é uma descrição do que essa seção do playbook faz.
- hosts – especifica em quais hosts o playbook deve ser executado. Neste caso, o playbook será executado no localhost.
- become: yes – indica que a execução das tarefas deve ser realizada com privilégios de root.
- vars – define as variáveis utilizadas neste playbook. Neste caso, a porta em que o WordPress será executado, o diretório onde os dados do WordPress serão armazenados e a senha do banco de dados MySQL.
- tasks – define as tarefas que serão executadas pelo playbook.
As tarefas fazem o seguinte:
- Instalação do Docker – utiliza o módulo apt para instalar o Docker e o Docker Compose no sistema.
- Criação do diretório para dados do WordPress – utiliza o módulo file para criar um diretório que armazenará os dados do WordPress.
- Configuração do firewall – utiliza o módulo ufw para abrir a porta do WordPress no firewall.
- Criação do arquivo docker-compose.yml – utiliza o módulo template para criar o arquivo docker-compose.yml que será utilizado pelo Docker Compose.
- Execução do container WordPress – utiliza o módulo docker_compose para executar o contêiner do WordPress. O project_src define onde o arquivo docker-compose.yml está localizado e o project_name define o nome do projeto do Docker Compose. O parâmetro state indica que o contêiner deve ser criado, e o parâmetro recreate garante que o contêiner seja recriado sempre que for encerrado.
E o docker-compose?
A etapa do modelo do docker-compose é responsável por criar o arquivo de configuração do Docker Compose que será utilizado para detalhar e gerenciar o container do WordPress.
O módulo utilizado para essa etapa é o template, que recebe como argumentos o arquivo modelo (.j2) que contém as variáveis e configurações do arquivo a ser gerado, o destino onde o arquivo será criado e a opção remote_src: yes, que indica que o arquivo modelo está no host remoto e não no host controlador.
Dentro do arquivo modelo do docker-compose.yml.j2 são definidos os serviços e configurações necessárias para o funcionamento do container do WordPress, como a imagem a ser utilizada, a porta a ser exposta, a configuração do banco de dados MySQL e as variáveis de ambiente do WordPress.
Ao final desta etapa, o arquivo docker-compose.yml será criado na pasta indicada pelo parâmetro dest do módulo template e estará pronto para ser utilizado na etapa seguinte de execução do container do WordPress.
Este código é um modelo de arquivo que segue o padrão YAML, usado pelo Docker Compose para definir e orquestrar os contêineres do Docker que compõem um aplicativo.
Este é o docker-compose.yml.j2:
version: '3'
services:
db:
image: mysql:5.7
volumes:
- "{{ wordpress_data_dir }}/mysql:/var/lib/mysql"
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: "{{ mysql_password }}"
MYSQL_RANDOM_ROOT_PASSWORD: '1'
networks:
- backend
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- "{{ wordpress_data_dir }}/html:/var/www/html"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: "{{ mysql_password }}"
ports:
- "{{ wordpress_port }}:80"
networks:
- backend
networks:
backend:
Explicando:
O arquivo inicia com a versão do Docker Compose que será usada, neste caso, a versão 3. Define um conjunto de serviços, que inclui dois contêineres: um para o banco de dados MySQL e outro para o WordPress.
O serviço de banco de dados é definido com a imagem do MySQL versão 5.7 e possui um volume definido para persistir os dados do MySQL em uma pasta específica. Também são definidas variáveis de ambiente para configurar o MySQL com um nome de banco de dados, usuário e senha.
O serviço do WordPress depende do serviço do banco de dados e é definido com a imagem mais recente do WordPress. Também possui um volume definido para persistir os dados do WordPress em uma pasta específica. Variáveis de ambiente são definidas para configurar o WordPress com o host e as credenciais do banco de dados. Além disso, é definida uma porta para permitir o acesso ao WordPress pela rede.
Por fim, é definida uma rede denominada backend para permitir a comunicação entre os contêineres do aplicativo.
Para executar a nossa playbook utilizamos o seguinte comando:
ansible-playbook playbook.yml
Acessando o WordPress:
Para visualizar a interface do WordPress basta acessar o seu navegador com o seguinte caminho: http://localhost:8080/
Desta forma você terá uma tela semelhante à estas para escolher o idioma e sequencialmente para definir algumas configurações:

Exemplo de configuração para instalação:
Após definir as configurações basta clicar em Instalar WordPress.
E para acessar o painel do WordPress basta clicar em Acessar, na próxima tela, e inserir os dados de login que foram configurados.
Conclusão
Neste projeto, criamos um ambiente WordPress executado em um container Docker. Utilizamos o Ansible para automatizar a instalação do Docker, criação do diretório de dados do WordPress, configuração do firewall e execução do container WordPress a partir de um arquivo docker-compose.yml.
A utilização de containers Docker oferece uma série de benefícios, como a facilidade de criação e destruição de ambientes, maior portabilidade de aplicações e maior eficiência na utilização de recursos do servidor. Além disso, a automação com Ansible torna a instalação e configuração mais fácil e rápida, reduzindo a possibilidade de erros humanos e facilitando a manutenção e atualização do ambiente.
Este projeto pode ser uma base para o desenvolvimento de ambientes de desenvolvimento e produção baseados em containers Docker, que podem ser facilmente replicados e escalados de acordo com as necessidades do projeto.
Links das Documentações:
Ansible
Docker
WordPress
Gostaria de aprender mais sobre o assunto?!
Conheça os nossos cursos da Carreira DevOps
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
About author
Você pode gostar também
Guia Prático: Como Instalar e Configurar o K3D para Kubernetes
Este post tem como objetivo apresentar um guia para instalação e configuração do K3D. A solução independe de sistemas operacionais pois todas as tecnologias serão utlilizadas em containers. Introdução Montar
Por que aprender sobre Containers é essencial para profissionais de TI
Conhecimentos em Docker, Kubernetes, OpenShift e outras soluções de containers estão valorizados. Em 2013, escrevi um artigo explicando por que um profissional de TI deveria aprender Linux e nele explico
Como a Computação em Nuvem Revolucionou o Big Data: Uma Análise Detalhada
Entre os anos 2012 a 2018, o Hadoop era considerado uma plataforma de Big Data praticamente hegemônica. Em um projeto típico de Big Data, além dos aspectos do pipeline de








