- name: Installation des pré-requis ansible.builtin.apt: name: - "nginx" - "php-fpm" - "php-mysql" - "php-curl" - "php-json" - "php-xml" - "php-mbstring" - "php-zip" - "zip" - name: Installation de wp-cli ansible.builtin.get_url: url: "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" dest: "/usr/local/bin/wp" owner: "root" group: "root" mode: "755" - name: Création de l'utilisateur système pour Wordpress ansible.builtin.user: name: "{{ wordpress_user | mandatory }}" home: "/var/www/{{ wordpress_user }}" group: "www-data" shell: "/usr/bin/bash" password_lock: true create_home: true - name: Création du répertoire de Wordpress ansible.builtin.file: path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}" state: "directory" owner: "{{ wordpress_user }}" group: "www-data" mode: "0750" - name: Installation de Wordpress become: true become_user: "{{ wordpress_user }}" ansible.builtin.command: chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}" cmd: "wp core download --locale='{{ wordpress_locale }}' --skip-content" creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-config-sample.php" # TODO: https://make.wordpress.org/cli/handbook/references/config/#config-files - name: Configuration de Wordpress become: true become_user: "{{ wordpress_user }}" ansible.builtin.shell: chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}" executable: "/usr/bin/bash" cmd: | set -o pipefail wp config create \ --dbhost='{{ wordpress_db_host }}' \ --dbname='{{ wordpress_db_name }}' \ --dbuser='{{ wordpress_db_user }}' \ --dbpass='{{ wordpress_db_pass }}' \ --dbprefix='{{ wordpress_db_prefix }}' \ --dbcharset='{{ wordpress_db_charset }}' \ --extra-php < wp core install --url='{{ wordpress_url }}' --title='{{ wordpress_site_title }}' --admin_user='{{ wordpress_admin_user }}' --admin_password='{{ wordpress_admin_password }}' --admin_email='{{ wordpress_admin_email }}' --locale='{{ wordpress_locale }}' --skip-email creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/uploads/ }}" register: "wordpress_out_core_install" changed_when: "'Success: WordPress installed successfully.' in wordpress_out_core_install.stdout" notify: - "Flush Wordpress" - name: Installation des thèmes Wordpress become: true become_user: "{{ wordpress_user }}" loop: "{{ wordpress_themes }}" ansible.builtin.command: chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}" cmd: "wp theme install '{{ item }}'" creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/themes/{{ item | basename | splitext | first }}" register: "wordpress_out_theme_install" changed_when: "'Success: Installed 1 of 1 themes' in wordpress_out_theme_install.stdout" notify: - "Flush Wordpress" - name: Activation du thème Wordpress become: true become_user: "{{ wordpress_user }}" ansible.builtin.command: chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}" cmd: "wp theme activate '{{ wordpress_active_theme }}'" register: "wordpress_out_theme_activate" changed_when: "'Success: Switched to ' in wordpress_out_theme_activate.stdout" notify: - "Flush Wordpress" - name: Installation des plugins wordpress-importer et one-click-demo-import vars: wordpress_plugins_to_install: - "wordpress-importer" - "one-click-demo-import" ansible.builtin.include_tasks: "install_plugins.yml" - name: Importation des plugins OCDI become: true become_user: "{{ wordpress_user }}" loop: "{{ wordpress_import_ocdi_indexes }}" ansible.builtin.shell: chdir: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}" executable: "/usr/bin/bash" cmd: | set -o pipefail wp ocdi import --predefined='{{ item }}' \ && touch /var/www/{{ wordpress_user }}/{{ wordpress_site }}/.ocdi_index{{ item }}_imported creates: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/.ocdi_index{{ item }}_imported" register: "wordpress_out_ocdi_import" changed_when: "'Success: Content import finished!' in wordpress_out_ocdi_import.stdout" notify: - "Flush Wordpress" - name: Installation des plugins Wordpress vars: wordpress_plugins_to_install: "{{ wordpress_plugins }}" ansible.builtin.include_tasks: "install_plugins.yml" - name: Création du répertoire cache de Wordpress ansible.builtin.file: path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/cache" state: "directory" owner: "{{ wordpress_user }}" group: "www-data" mode: "0750" - name: Apply permissions loop: - "uploads" - "cache" ansible.builtin.file: path: "/var/www/{{ wordpress_user }}/{{ wordpress_site }}/wp-content/{{ item }}/" owner: "{{ wordpress_user }}" group: "www-data" mode: "u=rwX,g=rwX,o=rX" recurse: true - name: Configuration de Nginx ansible.builtin.template: src: "templates/nginx_vhost.conf" dest: "/etc/nginx/sites-available/{{ wordpress_site }}.conf" owner: "root" group: "root" mode: "0644" notify: - "Restart Nginx" - name: Link Nginx vhost config ansible.builtin.file: src: "/etc/nginx/sites-available/{{ wordpress_site }}.conf" dest: "/etc/nginx/sites-enabled/{{ wordpress_site }}.conf" state: "link" notify: - "Restart Nginx" - name: Unlink Nginx default vhost config ansible.builtin.file: path: "/etc/nginx/sites-enabled/default" state: "absent" notify: - "Restart Nginx" # FIXME: php. ini config # Mainly: upload_max_filesize, post_max_size, max_execution_time