--- ## 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/"