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…