ajout playbook creation site
[lhc/ansible.git] / tasks / restore_to_vm.yml
index 8045db8..653b87e 100644 (file)
 ---
-- 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 }}"