Resumen
El siguiente artículo cubrirá los pasos para implementar WordPress en Docker usando Ansible. El propósito de este procedimiento es automatizar el proceso de implementación de WordPress en Docker con el libro de jugadas de Ansible.
Para implementar wordpress en docker usando ansible con éxito, primero hay que configurar algunos requisitos (enumerados a continuación en los requisitos previos)
Requisitos previos
- Docker instalado y ejecutándose en la máquina host de destino (la instalación de Docker también se puede automatizar con Ansible; enlace a POST)
- Acceso SSH habilitado en los hosts remotos con los parámetros de inicio de sesión preestablecidos en el archivo de hosts de Ansible
- Ansible instalado en la máquina cliente (su máquina)
- Python instalado y módulo docker de Python para Ansible en la máquina de destino
- Python instalado en su máquina local
Instalar el módulo Python Docker para Ansible
La mayoría de las distribuciones de Linux tienen Python3 preinstalado, pero para otras puede faltar el módulo Python Docker que usa Ansible. Sabrá que es así si recibe un error que menciona que el módulo falta o no se encuentra. Imagen de ejemplo del siguiente error:
El módulo mencionado es en realidad el SDK de Docker que utiliza Python para trabajar con Docker. La forma más fácil de instalar el módulo Python Docker es con la herramienta "pip". Si falta la herramienta "pip", puede instalarla fácilmente y luego con ella instalar el módulo acoplable de python:
Debian/Ubuntu sudo apt install python3-pip Fedora sudo dnf install python3-pip CentOS/RedHat sudo yum python3-pip
Después de instalar el pip, ejecute el comando para instalar el módulo docker:
pip3 install docker
Si por casualidad, encuentra un error en Ansible que no puede encontrar el módulo de Python, agregue una variable de intérprete de Python en su archivo de hosts. En la mayoría de los casos, se encuentra en “/usr/bin/python3” o “/usr/lib/python3” .
El error se parece a esto:
La variable del intérprete en el archivo de hosts se parece a esto:
ansible_python_interpreter=/usr/bin/python3
Anote los hosts en el archivo de hosts con los parámetros de inicio de sesión
Primer paso:agregar los parámetros necesarios en el archivo de hosts para que Ansible pueda acceder, iniciar sesión e interactuar con nuestra máquina:
sudo nano /etc/ansible/hosts
En el archivo de hosts, agregue los parámetros para que se vean así:
Después de agregar los parámetros necesarios para nuestro host remoto, guarde el archivo y salga.
Guía de Ansible para la implementación de WordPress en Docker
Para esta implementación, usaremos el siguiente libro de jugadas:
--- - hosts: docker vars: db_volume: mariadb wordpress: wordpress tasks: - name: Deploy MariaDB server docker_container: image: mariadb name: mariadb volumes: - "{{db_volume}}:/var/lib/mysql" env: MYSQL_ROOT_PASSWORD: somerootpassword MYSQL_PASSWORD: somemysqlpassword MYSQL_DATABASE: db MYSQL_USER: mysqluser - name: Deploy WordPress docker_container: image: wordpress name: wordpress restart_policy: always ports: - "8080:80" links: - "{{db_volume}}:/var/lib/mysql" volumes: - "{{wordpress}}:/var/www/html" env: MYSQL_PASSWORD: somemysqlpassword MYSQL_DATABASE: db MYSQL_USER: mysqluser MYSQL_HOST: mariadb
Siéntete libre de simplemente copiarlo.
Desglose del libro de jugadas:
hosts: docker // variable to target only machine hosts that are in the docker group
vars: db_volume: mariadb wordpress: wordpress // [OPTIONAL] defined variables for each container. These are used for setting volumes on the host and are matching the container names.
tasks: // Defined a task which will deploy a MariaDB container(MariaDB database server in container form). Task will pull down the official Docker image of MariaDB from the Docker hub, set a name container name "mariadb" and set a persistent volume on the host machine for the database storage. - name: Deploy MariaDB server // Task name docker_container: // Docker function that Ansible will use image: mariadb // Docker image to pull down name: mariadb // Specify the container name volumes: - "{{db_volume}}:/var/lib/mysql" // Specify a volume on the host machine for persistent storage
env: // Environment variables to define parameters for the database such as the root password, admin user password, name of the database and the user name of the new user on the MariaDB server MYSQL_ROOT_PASSWORD: somerootpassword // MySQL root password MYSQL_PASSWORD: somemysqlpassword // MySQL admin/standard user password to be used by WordPress MYSQL_DATABASE: db // MySQL database name MYSQL_USER: mysqluser // Admin/standard user username for WordPress to use
// This the task that will deploy the WordPress Docker container. Same just like for the MariaDB container, Ansible will pull down the official WordPress image from the Docker hub. Here we also specified the container restart policy(when to restart the container) and also set number of ports to expose on the container and bind to the host, so that the container can be accessible via browser and http protocol. - name: Deploy WordPress // Task name docker_container: // Docker function that Ansible will use image: wordpress // Docker image to pull down name: wordpress // Specify the container name restart_policy: always // Set attribute for container restart ports: - "8080:80" // Specify ports to expose on the container to be accessible via web browser links: - "{{db_volume}}:/var/lib/mysql // Variable to specify the link to the MySQL server so that WordPress can connect to the database volumes: - "{{wordpress}}:/var/www/html" // Specify a volume on the host machine for persistent storage
// Environment variables for the MariaDB database, for WordPress to use in order to connect to the database and use the database for data storage. env: MYSQL_PASSWORD: somemysqlpassword // Variable to specify MySQL for WordPress to use MYSQL_DATABASE: db // MySQL database name which will WordPress connect to MYSQL_USER: mysqluser // MySQL user for WordPress to use MYSQL_HOST: mariadb // MySQL database server to connect to(docker container name we previously set)
Implemente WordPress en Docker usando Ansible
Una vez que tengamos nuestro libro de jugadas de Ansible, ejecute el libro de jugadas:
docker deploy-wordpress.yml -l docker
Resultados esperados:
Compruebe si los contenedores se están ejecutando y si se puede acceder a WordPress a través del navegador:
Resumen
Para resumir el artículo, logramos implementar con éxito WordPress en Docker usando Ansible y con eso hemos automatizado el proceso de implementación de WordPress en Docker. Aunque se requería que el entorno de Ansible se configurara con el módulo Python y Python Docker para que este proceso fuera exitoso. Luego, escribimos y ejecutamos el libro de jugadas de Ansible que implementa WordPress con la base de datos y también tiene persistencia de datos para que los datos y los archivos no se almacenen en el contenedor de Docker.
Gracias por su tiempo…