✨: migrate wordpress to app dir
All checks were successful
ansible-lint / lint-everything (push) Successful in 1m24s
All checks were successful
ansible-lint / lint-everything (push) Successful in 1m24s
This commit is contained in:
@@ -5,6 +5,7 @@ web_hostname:
|
|||||||
- host: nintendojo.fr
|
- host: nintendojo.fr
|
||||||
acme_unmanaged: true
|
acme_unmanaged: true
|
||||||
- host: www.nintendojo.fr
|
- host: www.nintendojo.fr
|
||||||
|
type: wordpress
|
||||||
- host: forum.nintendojo.fr
|
- host: forum.nintendojo.fr
|
||||||
type: phpbb
|
type: phpbb
|
||||||
- host: nintendojofr.com
|
- host: nintendojofr.com
|
||||||
|
@@ -17,7 +17,7 @@ server {
|
|||||||
ssl_certificate /etc/x509/www.nintendojo.fr/fullchain.cer;
|
ssl_certificate /etc/x509/www.nintendojo.fr/fullchain.cer;
|
||||||
ssl_certificate_key /etc/x509/www.nintendojo.fr/www.nintendojo.fr.key;
|
ssl_certificate_key /etc/x509/www.nintendojo.fr/www.nintendojo.fr.key;
|
||||||
|
|
||||||
root /srv/http/www.nintendojo.fr/;
|
root /var/www/www.nintendojo.fr/;
|
||||||
index index.html index.htm index.php;
|
index index.html index.htm index.php;
|
||||||
|
|
||||||
client_max_body_size 2G;
|
client_max_body_size 2G;
|
||||||
|
@@ -2,3 +2,5 @@
|
|||||||
|
|
||||||
- name: Init DB
|
- name: Init DB
|
||||||
ansible.builtin.include_tasks: db.yml
|
ansible.builtin.include_tasks: db.yml
|
||||||
|
- name: Install wordpress
|
||||||
|
ansible.builtin.include_tasks: wordpress.yml
|
||||||
|
104
roles/wordpress/tasks/wordpress.yml
Normal file
104
roles/wordpress/tasks/wordpress.yml
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
## Remove the previous app & install the new version
|
||||||
|
- name: Remove wordpress previous version
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: absent
|
||||||
|
dest: "{{ wordpress_app_home }}"
|
||||||
|
|
||||||
|
- name: Create app home
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: directory
|
||||||
|
dest: "{{ wordpress_app_home }}"
|
||||||
|
owner: root
|
||||||
|
group: www-data
|
||||||
|
mode: "0o750"
|
||||||
|
|
||||||
|
- name: Install wordpress application
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
remote_src: true
|
||||||
|
src: "{{ wordpress_url }}"
|
||||||
|
dest: "{{ wordpress_app_home }}"
|
||||||
|
owner: root
|
||||||
|
group: www-data
|
||||||
|
mode: "a-rwx,u+rwX,g+rX"
|
||||||
|
extra_opts: ['--strip-components=1']
|
||||||
|
exclude: "{{ wordpress_userdata_app_dirs | map('regex_replace', '^', 'wordpress/') }}"
|
||||||
|
|
||||||
|
## Ensure the data dirs exist, populate them if not
|
||||||
|
- name: Create data home
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: directory
|
||||||
|
path: "{{ wordpress_data_home }}"
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
mode: "a-rwx,u+rwX,g+rX"
|
||||||
|
|
||||||
|
# If the first data dir exists, other should exist too
|
||||||
|
- name: Get data dir
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: "{{ wordpress_data_home }}/{{ wordpress_userdata_app_dirs[0] }}"
|
||||||
|
register: _wordpress_userdata_dir_stat
|
||||||
|
|
||||||
|
- name: Install wordpress data dir
|
||||||
|
when: not _wordpress_userdata_dir_stat.stat.exists
|
||||||
|
block:
|
||||||
|
- name: Unarchive wp-content
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
remote_src: true
|
||||||
|
src: "{{ wordpress_url }}"
|
||||||
|
dest: "{{ wordpress_data_home }}"
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
mode: "a-rwx,u+rwX,g+rX"
|
||||||
|
extra_opts: ['--strip-components=1']
|
||||||
|
include: "{{ wordpress_userdata_app_dirs | map('regex_replace', '^', 'wordpress/') | first }}"
|
||||||
|
## no-wp doesn’t exist by default, creating it
|
||||||
|
- name: Create no-wp
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: directory
|
||||||
|
dest: "{{ wordpress_data_home }}/no-wp"
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
mode: "0o750"
|
||||||
|
|
||||||
|
- name: Link wordpress userdata dirs
|
||||||
|
ansible.builtin.file:
|
||||||
|
state: link
|
||||||
|
src: "{{ wordpress_data_home }}/{{ item }}"
|
||||||
|
dest: "{{ wordpress_app_home }}/{{ item }}"
|
||||||
|
loop: "{{ wordpress_userdata_app_dirs }}"
|
||||||
|
|
||||||
|
# Put config file
|
||||||
|
- name: Get secret-key salt
|
||||||
|
ansible.builtin.uri:
|
||||||
|
url: "https://api.wordpress.org/secret-key/1.1/salt/"
|
||||||
|
return_content: true
|
||||||
|
register: _wordpress_secret_salt
|
||||||
|
|
||||||
|
- name: Put wordpress configuration file
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: wp-config.php.j2
|
||||||
|
dest: "{{ wordpress_config_path }}"
|
||||||
|
owner: root
|
||||||
|
group: www-data
|
||||||
|
mode: "0o640"
|
||||||
|
vars:
|
||||||
|
salt_block: "{{ _wordpress_secret_salt.content }}"
|
||||||
|
|
||||||
|
# Handle languages
|
||||||
|
- name: Find & delete default language files inside wp-content
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: "find {{ wordpress_data_home }}/wp-content/languages/ -type f -maxdepth 1 -delete"
|
||||||
|
changed_when: true
|
||||||
|
|
||||||
|
- name: Reextract language files
|
||||||
|
ansible.builtin.unarchive:
|
||||||
|
remote_src: true
|
||||||
|
src: "{{ wordpress_url }}"
|
||||||
|
dest: "{{ wordpress_data_home }}"
|
||||||
|
owner: www-data
|
||||||
|
group: www-data
|
||||||
|
mode: "a-rwx,u+rwX,g+rX"
|
||||||
|
extra_opts: ['--strip-components=1']
|
||||||
|
include: "wordpress/wp-content/languages/"
|
93
roles/wordpress/templates/wp-config.php.j2
Normal file
93
roles/wordpress/templates/wp-config.php.j2
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La configuration de base de votre installation WordPress.
|
||||||
|
*
|
||||||
|
* Ce fichier contient les réglages de configuration suivants : réglages MySQL,
|
||||||
|
* préfixe de table, clefs secrètes, langue utilisée, et ABSPATH.
|
||||||
|
* Vous pouvez en savoir plus à leur sujet en allant sur
|
||||||
|
* {@link http://codex.wordpress.org/Editing_wp-config.php Modifier
|
||||||
|
* wp-config.php} (en anglais). C'est votre hébergeur qui doit vous donner vos
|
||||||
|
* codes MySQL.
|
||||||
|
*
|
||||||
|
* Ce fichier est utilisé par le script de création de wp-config.php pendant
|
||||||
|
* le processus d'installation. Vous n'avez pas à utiliser le site web, vous
|
||||||
|
* pouvez simplement renommer ce fichier en "wp-config.php" et remplir les
|
||||||
|
* valeurs.
|
||||||
|
*
|
||||||
|
* @package WordPress
|
||||||
|
*/
|
||||||
|
|
||||||
|
// ** Réglages MySQL - Votre hébergeur doit vous fournir ces informations. ** //
|
||||||
|
/** Nom de la base de données de WordPress. */
|
||||||
|
define('DB_NAME', '{{ wordpress_maria_database }}');
|
||||||
|
|
||||||
|
/** Utilisateur de la base de données MySQL. */
|
||||||
|
define('DB_USER', '{{ wordpress_maria_user }}');
|
||||||
|
|
||||||
|
/** Mot de passe de la base de données MySQL. */
|
||||||
|
define('DB_PASSWORD', '{{ wordpress_maria_password }}');
|
||||||
|
|
||||||
|
/** Adresse de l'hébergement MySQL. */
|
||||||
|
define('DB_HOST', 'localhost');
|
||||||
|
|
||||||
|
/** Jeu de caractères à utiliser par la base de données lors de la création des tables. */
|
||||||
|
define('DB_CHARSET', 'utf8');
|
||||||
|
|
||||||
|
/** Type de collation de la base de données.
|
||||||
|
* N'y touchez que si vous savez ce que vous faites.
|
||||||
|
*/
|
||||||
|
define('DB_COLLATE', '');
|
||||||
|
|
||||||
|
/**#@+
|
||||||
|
* Clefs uniques d'authentification et salage.
|
||||||
|
*
|
||||||
|
* Remplacez les valeurs par défaut par des phrases uniques !
|
||||||
|
* Vous pouvez générer des phrases aléatoires en utilisant
|
||||||
|
* {@link https://api.wordpress.org/secret-key/1.1/salt/ le service de clefs secrètes de WordPress.org}.
|
||||||
|
* Vous pouvez modifier ces phrases à n'importe quel moment, afin d'invalider tous les cookies existants.
|
||||||
|
* Cela forcera également tous les utilisateurs à se reconnecter.
|
||||||
|
*
|
||||||
|
* @since 2.6.0
|
||||||
|
*/
|
||||||
|
{{ salt_block }}
|
||||||
|
/**#@-*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Préfixe de base de données pour les tables de WordPress.
|
||||||
|
*
|
||||||
|
* Vous pouvez installer plusieurs WordPress sur une seule base de données
|
||||||
|
* si vous leur donnez chacune un préfixe unique.
|
||||||
|
* N'utilisez que des chiffres, des lettres non-accentuées, et des caractères soulignés!
|
||||||
|
*/
|
||||||
|
$table_prefix = 'wp_';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Langue de localisation de WordPress, par défaut en Anglais.
|
||||||
|
*
|
||||||
|
* Modifiez cette valeur pour localiser WordPress. Un fichier MO correspondant
|
||||||
|
* au langage choisi doit être installé dans le dossier wp-content/languages.
|
||||||
|
* Par exemple, pour mettre en place une traduction française, mettez le fichier
|
||||||
|
* fr_FR.mo dans wp-content/languages, et réglez l'option ci-dessous à "fr_FR".
|
||||||
|
*/
|
||||||
|
define('WPLANG', 'fr_FR');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pour les développeurs : le mode deboguage de WordPress.
|
||||||
|
*
|
||||||
|
* En passant la valeur suivante à "true", vous activez l'affichage des
|
||||||
|
* notifications d'erreurs pendant votre essais.
|
||||||
|
* Il est fortemment recommandé que les développeurs d'extensions et
|
||||||
|
* de thèmes se servent de WP_DEBUG dans leur environnement de
|
||||||
|
* développement.
|
||||||
|
*/
|
||||||
|
define('WP_DEBUG', false);
|
||||||
|
|
||||||
|
/* C'est tout, ne touchez pas à ce qui suit ! Bon blogging ! */
|
||||||
|
|
||||||
|
/** Chemin absolu vers le dossier de WordPress. */
|
||||||
|
if ( !defined('ABSPATH') )
|
||||||
|
define('ABSPATH', dirname(__FILE__) . '/');
|
||||||
|
|
||||||
|
/** Réglage des variables de WordPress et de ses fichiers inclus. */
|
||||||
|
require_once(ABSPATH . 'wp-settings.php');
|
17
roles/wordpress/vars/main.yml
Normal file
17
roles/wordpress/vars/main.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
wordpress_version: "6.7.2"
|
||||||
|
wordpress_url: "https://fr.wordpress.org/wordpress-{{ wordpress_version }}-fr_FR.tar.gz"
|
||||||
|
|
||||||
|
wordpress_access_url: "{{ web_hostname | selectattr('type', 'defined') | selectattr('type', '==', 'wordpress') | map(attribute='host') | first }}"
|
||||||
|
|
||||||
|
# Access path
|
||||||
|
wordpress_app_home: "/var/www/{{ wordpress_access_url }}"
|
||||||
|
wordpress_data_home: "/srv/www-data/{{ wordpress_access_url }}"
|
||||||
|
|
||||||
|
# App dirs
|
||||||
|
wordpress_userdata_app_dirs:
|
||||||
|
- wp-content
|
||||||
|
- no-wp
|
||||||
|
|
||||||
|
wordpress_config_path: "{{ wordpress_app_home }}/wp-config.php"
|
Reference in New Issue
Block a user