Déployer WordPress automatiquement avec le rôle Ansible

Aujourd’hui, de plus en plus de professionnels de l’IT — sysadmins, DevOps, freelances et agences web — recherchent des solutions pour déployer WordPress de façon automatisée, rapide, et sécurisée.

Installer un WordPress “à la main”, c’est bien pour un site mais quand il s’agit de déployer à la chaîne, de migrer des bases, de standardiser pour des clients exigeants, l’automatisation devient indispensable.

ansible role wordpress linux

En tant que spécialiste Linux, DevOps et fondateur de linux-man.fr, j’ai été confronté à ce besoin à plusieurs reprises pour mes clients. C’est pourquoi j’ai conçu et publié un rôle Ansible WordPress, maintenant disponible sur Ansible Galaxy, pour répondre à ces problématiques récurrentes :

Pourquoi j’ai créé/forké ce rôle WordPress Ansible ?

Comme souvent dans le monde open-source, l’existant est une source d’inspiration.
Je suis parti du projet MakarenaLabs/ansible-role-wordpress, mais, comme beaucoup, j’ai eu des besoins récurrents pour mes clients :

C’est pour ça que je n’hésite jamais à forker un projet Ansible, l’adapter, l’améliorer et publier mes propres évolutions pour en faire profiter la communauté.
Forker et améliorer un projet open-source est souvent la meilleure façon de répondre à des besoins précis, tout en contribuant à l’écosystème (les PR c’est encore mieux quand c’est possible).
Je t’invite d’ailleurs à faire de même, à contribuer, ou à me faire des retours sur gitlab !

Qu’est-ce qu’un rôle Ansible WordPress ?

Un rôle Ansible est un ensemble de tâches prêtes à l’emploi pour automatiser une installation ou une configuration. Ici, il permet de :


Les avantages d’un déploiement WordPress automatisé

  1. Gain de temps colossal — Un site prêt en moins de 5 minutes.
  2. Standardisation — Tu obtiens la même config sur tous tes serveurs, idéal pour prod/staging/dev.
  3. Sécurité by default — Permissions, HTTPS, headers de sécurité, restriction uploads PHP, tout est intégré.
  4. Migration facilitée — En une seule commande, tu restaures un site complet avec sa base de données.

🚀 Mise en route express

Installation du rôle depuis Ansible Galaxy

ansible-galaxy role install babidi34.wordpress

Exemple de playbook minimal

- hosts: wordpress_servers
become: yes
vars:
wp_version: "6.8.1"
wp_sitename: "mysite.fr"
wp_admin_user: "boss"
wp_admin_password: "strong_password"
wp_admin_email: "contact@mysite.fr"
roles:
- role: babidi34.wordpress

Tu lances ensuite :

ansible-playbook -i inventory deploy-wordpress.yml

Résultat : un WordPress sécurisé, fonctionnel, prêt à l’emploi en quelques minutes

Fonctionnalités principales

FonctionDétails
Déploiement completTélécharge, installe et configure WordPress, la base de données, le serveur web, les permissions
Webservers multiplesSupport Nginx (par défaut), Apache, ou Caddy
SSL/HTTPSGère le HTTPS auto
Import SQL/dumpOption pour importer une base MySQL existante
Charset/collationutf8mb4 par défaut, personnalisable via variables
Sécurité avancéePermissions www-data, headers de sécurité, restriction upload PHP
WP-CLI intégréCréation/mise à jour de l’admin, search/replace URLs, gestion plugins et thèmes

Pourquoi choisir ce rôle plutôt qu’un autre ?

Il existe plusieurs rôles WordPress sur Ansible Galaxy mais j’ai conçu ce fork pour aller plus loin :

Ce rôle est pensé pour répondre à des besoins réels en entreprise ou en prestation freelance.
Chaque amélioration vient d’un retour terrain, d’un vrai besoin de mes clients.

Customisation avancée

L’un des gros avantages de ce rôle, c’est que tout est configurable très simplement via les variables du playbook ou de l’inventaire.
Tu peux ainsi adapter le déploiement à n’importe quel contexte client ou infrastructure, sans toucher au code du rôle.

Voici les principales variables (issues du defaults/main.yml) que tu peux surcharger :

wp_version: "6.8.3"
wp_sources: "http://wordpress.org/wordpress-{{ wp_version }}.tar.gz"
wp_remote_src: true
wp_chdir_cp_sources: "{{ wp_install_dir }}/wordpress/"
wp_install_dir: "/var/www/html"

wp_db_name: "my_database"
wp_db_user: "my_database_user"
wp_db_password: "my_password"
wp_db_host: "localhost"
wp_db_charset: "utf8mb4"
wp_db_collate: "utf8mb4_unicode_ci"
wp_db_import_file: "" # Pour l'import automatique d'un dump SQL si besoin
wp_table_prefix: "wp_"
wp_debug: false

wp_admin_email: "admin@example.com"
wp_webserver: nginx # Peut aussi être "apache" ou "caddy"
wp_sitename: "mysite"
wp_url: "https://{{ wp_sitename }}"
wp_auto_setup: true
wp_site_title: "Your Site Title"
wp_admin_user: "your_username"
wp_admin_password: "your_password"

wp_nginx_port: 443
wp_nginx_ssl_enabled: true
wp_nginx_ssl_certificate: "/etc/ssl/certs/ssl-cert-snakeoil.pem"
wp_nginx_ssl_certificate_key: "/etc/ssl/private/ssl-cert-snakeoil.key"
wp_nginx_default_server: false
wp_nginx_ipv6: true
wp_nginx_client_max_body_size: "64M"
wp_nginx_force_https: true

Astuce : tu peux bien sûr surcharger seulement les variables qui t’intéressent dans ton playbook.
Toutes les autres prendront leur valeur par défaut.

Grâce à cette flexibilité, tu peux adapter ton déploiement WordPress à chaque projet, gérer plusieurs environnements, importer une base existante, ou customiser la sécurité, les ports, le SSL, etc…

Lien vers le rôle

Voici le lien ansible wordpress role

Je mets mon expertise à disposition pour accompagner les TPE et PME dans la gestion de leur infrastructure.

Quitter la version mobile