X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=tasks%2Frestore_to_vm.yml;h=653b87e7a48a4565c04fc93d62b862265c5c9a3d;hb=f0a634c73af3548be7ea962f1065f6d1d9f69dd4;hp=8045db80779ec6238d8214f4f8e7b3fba289e071;hpb=4c81f66f692275c89b9cf5bf075f190b16c0307b;p=lhc%2Fansible.git diff --git a/tasks/restore_to_vm.yml b/tasks/restore_to_vm.yml index 8045db8..653b87e 100644 --- a/tasks/restore_to_vm.yml +++ b/tasks/restore_to_vm.yml @@ -1,133 +1,229 @@ --- -- name: clean nextcloud restore dir content +# 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: "{{ nextcloud_tmp_path }}" + path: "{{ item }}" state: absent + loop: + - "{{ nextcloud_tmp_path }}" + - "{{ nextcloud_webroot }}/data" -- name: recreate nextcloud restore dir +- name: Recreate nextcloud restore dir # necessite le paquet acl installé + become_user: "{{ nextcloud_websrv_user }}" + become: true 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 }}" + path: "{{ item }}" + state: directory loop: - - "{{ nextcloud_tmp_path }}/dump.sql" - - "{{ nextcloud_tmp_path }}/data.tgz" - - "{{ nextcloud_tmp_path }}/config.php" + - "{{ nextcloud_tmp_path }}" -- name: Extract nc data archive - ansible.builtin.unarchive: - src: "{{ nextcloud_data_tmp }}" - dest: "{{ nextcloud_data_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: stop webserver service +- 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: restore psql dump +- 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 }}" - command: "pg_restore -F c -O -d {{ nextcloud_db_name }} {{ nextcloud_tmp_path }}/dump.sql" + 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: copy config.php over from old instance +- name: Create sigle nextcloud config 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 + 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: 0640 + 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 +- name: Update nextcloud root dir symbolic link become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.file: - src: "{{ nextcloud_files_path }}/nextcloud-{{ nextcloud_version }}" + src: "{{ nextcloud_source }}" dest: "{{ nextcloud_webroot }}/nextcloud" owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" state: link + follow: false -- name: deactivate nextcloud maintenance mode +- name: Update nextcloud common app dir symbolic link become_user: "{{ nextcloud_websrv_user }}" become: true - command: './console maintenance:mode --off' - args: - chdir: "{{ nextcloud_webroot }}" + ansible.builtin.file: + src: "{{ nextcloud_common }}" + dest: "{{ nextcloud_webroot }}/common" + owner: "{{ nextcloud_websrv_user }}" + group: "{{ nextcloud_websrv_user }}" + state: link + follow: false -- name: Run occ upgrade +- 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 - command: './console upgrade' + ansible.builtin.command: './console upgrade' args: chdir: "{{ nextcloud_webroot }}" register: nc_upgrade_result -- name: display upgrade result - debug: +- name: Display upgrade result + ansible.builtin.debug: var: nc_upgrade_result.stdout_lines -- name: wait for upgrade to complete +- 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 + + - 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 - 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 }}" + + - 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: start webserver service - become: true - become_user: root - ansible.builtin.service: - name: "{{ nextcloud_websrv }}" - state: started - no_log: true \ No newline at end of file + - 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 }}"