GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Implemente WordPress en Docker usando Ansible

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”“/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…


Docker
  1. Máquinas virtuales multipaso mediante el uso de Ansible

  2. Configurar Nextcloud con Redis usando Docker

  3. Implemente WordPress en Docker usando Ansible

  4. Implemente Nextcloud en Docker usando Ansible

  5. Cómo implementar PostgreSQL como un contenedor Docker

Cómo instalar Ansible en Ubuntu 20.04

Cómo implementar Pi-Hole en Debian 11

Instalar Navidrome usando Docker

Cómo instalar Gitea en Ubuntu usando Docker

Implementar una instalación de MariaDB de Docker de producción

Uso de Docker Desktop para administrar un contenedor