diff --git a/inventory/host_vars/web2.yml b/inventory/host_vars/web2.yml index 99bd9f1..7d04007 100644 --- a/inventory/host_vars/web2.yml +++ b/inventory/host_vars/web2.yml @@ -5,6 +5,7 @@ web_hostname: - host: nintendojo.fr acme_unmanaged: true - host: www.nintendojo.fr + type: wordpress - host: forum.nintendojo.fr type: phpbb - host: nintendojofr.com diff --git a/roles/nginx/templates/vhosts/www.nintendojo.fr.conf.j2 b/roles/nginx/templates/vhosts/www.nintendojo.fr.conf.j2 index 27c5d6a..a3dc10b 100644 --- a/roles/nginx/templates/vhosts/www.nintendojo.fr.conf.j2 +++ b/roles/nginx/templates/vhosts/www.nintendojo.fr.conf.j2 @@ -17,7 +17,7 @@ server { ssl_certificate /etc/x509/www.nintendojo.fr/fullchain.cer; 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; client_max_body_size 2G; diff --git a/roles/wordpress/tasks/main.yml b/roles/wordpress/tasks/main.yml index 53d3b04..a6e8380 100644 --- a/roles/wordpress/tasks/main.yml +++ b/roles/wordpress/tasks/main.yml @@ -2,3 +2,5 @@ - name: Init DB ansible.builtin.include_tasks: db.yml +- name: Install wordpress + ansible.builtin.include_tasks: wordpress.yml diff --git a/roles/wordpress/tasks/wordpress.yml b/roles/wordpress/tasks/wordpress.yml new file mode 100644 index 0000000..9350f90 --- /dev/null +++ b/roles/wordpress/tasks/wordpress.yml @@ -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/" diff --git a/roles/wordpress/templates/wp-config.php.j2 b/roles/wordpress/templates/wp-config.php.j2 new file mode 100644 index 0000000..470fc65 --- /dev/null +++ b/roles/wordpress/templates/wp-config.php.j2 @@ -0,0 +1,93 @@ +