GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Déployer WordPress sur Docker en utilisant Ansible

Aperçu

L'article suivant couvrira les étapes de déploiement de WordPress sur Docker à l'aide d'Ansible. Le but de cette procédure est d'automatiser le processus de déploiement de WordPress sur Docker avec le playbook Ansible.

Afin de déployer wordpress sur docker à l'aide d'ansible avec succès, il y a d'abord certaines exigences à configurer (énumérées ci-dessous dans les prérequis)

Prérequis

  • Docker installé et en cours d'exécution sur la machine hôte cible (l'installation de Docker peut également être automatisée avec Ansible – lien vers le POST)
  • Accès SSH activé sur les hôtes distants avec les paramètres de connexion prédéfinis dans le fichier d'hôtes Ansible
  • Ansible installé sur la machine cliente (votre machine)
  • Installation du module Docker Python et Python pour Ansible sur la machine cible
  • Python installé sur votre ordinateur local

Installer le module Python Docker pour Ansible

La plupart des distributions Linux ont Python3 préinstallé, mais pour d'autres, le module Python Docker utilisé par Ansible peut être manquant. Vous saurez que c'est si vous obtenez une erreur mentionnant que le module est manquant ou introuvable. Exemple d'image de l'erreur ci-dessous :

Le module mentionné est en fait le SDK Docker que Python utilise pour travailler avec Docker. Le moyen le plus simple d'installer le module Python Docker est d'utiliser l'outil "pip". Si l'outil "pip" est manquant, vous pouvez facilement installer puis avec lui installer le module python docker :

Debian/Ubuntu

sudo apt install python3-pip

Fedora

sudo dnf install python3-pip

CentOS/RedHat

sudo yum python3-pip

Après avoir installé le pip, exécutez la commande pour installer le module docker :

pip3 install docker

Si par hasard, vous rencontrez une erreur dans Ansible indiquant qu'il ne peut pas trouver le module Python, ajoutez une variable d'interpréteur python dans votre fichier hosts. Dans la plupart des cas, il se trouve soit dans "/usr/bin/python3" ou "/usr/lib/python3" .

L'erreur ressemble à ceci :

La variable d'interpréteur dans le fichier hosts ressemble à ceci :

ansible_python_interpreter=/usr/bin/python3

Écrivez les hôtes dans le fichier hosts avec les paramètres de connexion

Première étape - Ajouter les paramètres nécessaires dans le fichier hosts pour qu'Ansible puisse atteindre, se connecter et interagir avec notre machine :

sudo nano /etc/ansible/hosts

Dans le fichier hosts, ajoutez les paramètres pour ressembler à ceci :

Une fois les paramètres nécessaires pour notre hôte distant ajoutés, enregistrez le fichier et quittez.

Playbook Ansible pour le déploiement de WordPress sur Docker

Pour ce déploiement, nous utiliserons le playbook suivant :

---
- 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

N'hésitez pas à le copier.

Répartition du livre :

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)

Déployer WordPress sur Docker à l'aide d'Ansible

Une fois que nous avons notre playbook Ansible, exécutez-le :

docker deploy-wordpress.yml -l docker

Résultats attendus :

Vérifiez si les conteneurs sont en cours d'exécution et que WordPress est accessible via le navigateur :

Résumé

Pour résumer l'article - nous avons réussi à déployer WordPress sur Docker en utilisant Ansible et avec cela nous avons automatisé le processus de déploiement de WordPress sur Docker. Bien que l'environnement Ansible devait être configuré avec le module Python et Python Docker pour que ce processus réussisse. Ensuite, nous avons écrit et exécuté le playbook Ansible qui déploie WordPress avec la base de données et a également une persistance des données afin que les données et les fichiers ne soient pas stockés dans le conteneur Docker.

Merci pour votre temps…


Docker
  1. Machines virtuelles multipasses à l'aide d'Ansible

  2. Configurer Nextcloud avec Redis à l'aide de Docker

  3. Déployer WordPress sur Docker en utilisant Ansible

  4. Comment déployer PostgreSQL en tant que conteneur Docker

  5. Comment installer Docker sur CentOS

Comment installer Ansible sur Ubuntu 20.04

Comment déployer Pi-Hole sur Debian 11

Installer Navidrome avec Docker

Comment installer Gitea sur Ubuntu en utilisant Docker

Déployer une installation de production Docker MariaDB

Utiliser Docker Desktop pour gérer un conteneur