--- # chown -R www-data: /opt/nuage/backups/clavette-gre # sudo -u postgres psql # DROP DATABASE nextcloud; # CREATE DATABASE nextcloud WITH OWNER=php_mig_nuage; # GRANT ALL ON SCHEMA public TO php_mig_nuage WITH GRANT OPTION; # GRANT USAGE,CREATE ON SCHEMA public TO php_mig_nuage; # GRANT SELECT ON TABLE pg_namespace TO php_mig_nuage; # GRANT SELECT ON TABLE pg_collation TO php_mig_nuage; # GRANT SELECT ON TABLE pg_index TO php_mig_nuage; # GRANT SELECT ON TABLE pg_attrdef TO php_mig_nuage; # GRANT SELECT ON TABLE pg_description TO php_mig_nuage; # GRANT SELECT ON TABLE pg_settings TO php_mig_nuage; # GRANT SELECT ON pg_database TO php_mig_nuage; # exit # sudo -u php_mig_nuage pg_restore -F c -Oxc --if-exists -d nextcloud /opt/nuage/backups/clavette-gre/dump.pgc - name: Clean nextcloud restore dir content become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.file: path: "{{ item }}" state: absent loop: - "{{ nextcloud_tmp_path }}" - "{{ nextcloud_webroot }}/data" - name: Recreate nextcloud restore dir # necessite le paquet acl installé become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.file: path: "{{ item }}" state: directory loop: - "{{ nextcloud_tmp_path }}" - name: Copy files from ansible controller to vm host become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.copy: src: "{{ nextcloud_tmp_path }}/" dest: "{{ nextcloud_tmp_path }}/" - name: Add read permissions to data backups files become: true become_user: root ansible.builtin.file: path: "{{ nextcloud_backup_path }}" owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" state: directory recurse: true mode: '755' # or 'u=rw,g=r,o=r' - name: Créer un lien symbolique vers le dossier data backups become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.file: src: "{{ nextcloud_backup_path }}/data" dest: "{{ nextcloud_webroot }}/data" owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" state: link follow: false - name: Stop webserver service become: true become_user: root ansible.builtin.service: name: "{{ nextcloud_websrv }}" state: stopped - name: "[PostgreSQL] - {{ nextcloud_websrv_user }} role is created." become_user: postgres become: true community.postgresql.postgresql_user: name: "{{ nextcloud_websrv_user }}" state: present role_attr_flags: CREATEDB - name: "[PostgreSQL] - {{ nextcloud_db_name }} database is created." become_user: postgres become: true community.postgresql.postgresql_db: name: "{{ nextcloud_db_name }}" state: "{{ item }}" owner: "{{ nextcloud_websrv_user }}" target: "{{ nextcloud_tmp_path }}/dump.pgc" target_opts: "-F c -Oxc --if-exists" loop: - absent - present - restore # - name: Restore psql dump # noqa : command-instead-of-module # become: true # become_user: postgres # ansible.builtin.command: "pg_restore -F c -Oxc --if-exists -d {{ nextcloud_db_name }} {{ nextcloud_tmp_path }}/dump.pgc" - name: Create vm nextcloud config become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.template: src: templates/vm_config_template.j2 dest: "{{ nextcloud_webroot }}/config/vm.config.php" owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" mode: '640' # or u=rwx,g=r,o= - name: Create sigle nextcloud config become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.template: src: templates/sigle_config_template.j2 dest: "{{ nextcloud_webroot }}/config/sigle.config.php" owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" mode: '640' # or u=rwx,g=r,o= - name: Update data fingerprint post db restore # noqa : command-instead-of-module become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.command: './console maintenance:data-fingerprint' args: chdir: "{{ nextcloud_webroot }}" - name: Deactivate nextcloud maintenance mode # noqa : command-instead-of-module become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.command: './console maintenance:mode --off' args: chdir: "{{ nextcloud_webroot }}" - name: Update nextcloud root dir symbolic link become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.file: src: "{{ nextcloud_source }}" dest: "{{ nextcloud_webroot }}/nextcloud" owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" state: link follow: false - name: Update nextcloud common app dir symbolic link become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.file: src: "{{ nextcloud_common }}" dest: "{{ nextcloud_webroot }}/common" owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" state: link follow: false - name: Start webserver service become: true ansible.builtin.service: name: "{{ nextcloud_websrv }}" state: started - name: Run occ upgrade # noqa : command-instead-of-module become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.command: './console upgrade' args: chdir: "{{ nextcloud_webroot }}" register: nc_upgrade_result - name: Display upgrade result ansible.builtin.debug: var: nc_upgrade_result.stdout_lines - name: Wait for upgrade to complete block: - name: Wait for nextcloud maintenance mode to become false # noqa : command-instead-of-module become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.command: './console status' args: chdir: "{{ nextcloud_webroot }}" register: result until: "'maintenance: false' in result.stdout" retries: 15 delay: 20 rescue: - name: Deactivate maintenance mode manually # noqa : command-instead-of-module become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.command: './console maintenance:mode --off' args: chdir: "{{ nextcloud_webroot }}" register: rescue - name: Display rescue ansible.builtin.debug: var: rescue.stdout_lines - name: Launch post-upgrade cleaning scripts when: "'Nextcloud is already latest version' not in nc_upgrade_result.stdout_lines" block: - name: Launch some occ cleaning command # noqa : command-instead-of-module become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.command: "./console { command }}" args: chdir: "{{ nextcloud_webroot }}" loop: - db:add-missing-columns - db:add-missing-indices - db:add-missing-primary-keys - dav:remove-invalid-shares - files:cleanup # - files:scan --all loop_control: loop_var: command register: nc_indices_cmd - name: Display each occ commands result ansible.builtin.debug: msg: "{{ item.stdout_lines }}" loop: "{{ nc_indices_cmd.results }}" loop_control: label: "{{ item.command }}"