--- - name: clean nextcloud restore dir content ansible.builtin.file: path: "{{ nextcloud_tmp_path }}" state: absent - name: recreate nextcloud restore dir ansible.builtin.file: path: "{{ nextcloud_tmp_path }}" state: present - name: Copy the file from ansible controller to vm host copy: src: "{{ item }}" dest: "{{ nextcloud_data_path }}" loop: - "{{ nextcloud_tmp_path }}/dump.sql" - "{{ nextcloud_tmp_path }}/data.tgz" - "{{ nextcloud_tmp_path }}/config.php" - name: Extract nc data archive ansible.builtin.unarchive: src: "{{ nextcloud_data_tmp }}" dest: "{{ nextcloud_data_path }}" - name: stop webserver service become: true become_user: root ansible.builtin.service: name: "{{ nextcloud_websrv }}" state: stopped - name: restore psql dump become: true become_user: "{{ nextcloud_websrv_user }}" command: "pg_restore -F c -O -d {{ nextcloud_db_name }} {{ nextcloud_tmp_path }}/dump.sql" - name: copy config.php over from old instance become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.copy: src: "{{ nextcloud_data_tmp }}/config/config.php" dest: "{{ nextcloud_webroot }}/config/config.php" remote_src: yes #because the config file is already in the nextcloud_tmp_path owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" mode: '640' #or u=rwx,g=r,o= - name: update nextcloud root dir symbolic link become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.file: src: "{{ nextcloud_files_path }}/nextcloud-{{ nextcloud_version }}" dest: "{{ nextcloud_webroot }}/nextcloud" owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" state: link - name: deactivate nextcloud maintenance mode become_user: "{{ nextcloud_websrv_user }}" become: true command: './console maintenance:mode --off' args: chdir: "{{ nextcloud_webroot }}" - name: Run occ upgrade become_user: "{{ nextcloud_websrv_user }}" become: true command: './console upgrade' args: chdir: "{{ nextcloud_webroot }}" register: nc_upgrade_result - name: display upgrade result debug: var: nc_upgrade_result.stdout_lines - name: wait for upgrade to complete block: - name: wait for nextcloud maintenance mode to become false become_user: "{{ nextcloud_websrv_user }}" become: true command: php occ status args: chdir: "{{ nextcloud_webroot }}" register: result until: "'maintenance: false' in result.stdout" retries: 15 delay: 20 rescue: - name: deactivate maintenance mode manually become_user: "{{ nextcloud_websrv_user }}" become: true command: php occ maintenance:mode --off register: rescue - name: display rescue debug: var: rescue.stdout_lines - name: launch post-upgrade cleaning scripts block: - name: launch some occ cleaning command become_user: "{{ nextcloud_websrv_user }}" become: true command: "php occ {{ 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 debug: msg: "{{ item.stdout_lines }}" loop: "{{ nc_indices_cmd.results }}" loop_control: label: "{{ item.command }}" when: "'Nextcloud is already latest version' not in nc_upgrade_result.stdout_lines" - name: start webserver service become: true become_user: root ansible.builtin.service: name: "{{ nextcloud_websrv }}" state: started no_log: true