ca771cb8acbec18f1ddbd06587252a36bd964328
[lhc/ansible.git] / tasks / restore_to_vm.yml
1 ---
2 - name: clean nextcloud restore dir content
3 ansible.builtin.file:
4 path: "{{ nextcloud_tmp_path }}"
5 state: absent
6
7 - name: recreate nextcloud restore dir
8 ansible.builtin.file:
9 path: "{{ nextcloud_tmp_path }}"
10 state: present
11
12 - name: Copy the file from ansible controller to vm host
13 copy:
14 src: "{{ item }}"
15 dest: "{{ nextcloud_data_path }}"
16 loop:
17 - "{{ nextcloud_tmp_path }}/dump.sql"
18 - "{{ nextcloud_tmp_path }}/data.tar.gz"
19 - "{{ nextcloud_tmp_path }}/config.php"
20
21 - name: Extract nc data archive
22 ansible.builtin.unarchive:
23 src: "{{ nextcloud_data_tmp }}"
24 dest: "{{ nextcloud_data_path }}"
25
26 - name: stop webserver service
27 become: true
28 become_user: root
29 ansible.builtin.service:
30 name: "{{ nextcloud_websrv }}"
31 state: stopped
32
33 - name: restore psql dump
34 become: true
35 become_user: "{{ nextcloud_websrv_user }}"
36 command: "pg_restore -F c -O -d {{ nextcloud_db_name }} {{ nextcloud_tmp_path }}/dump.sql"
37
38 - name: copy config.php over from old instance
39 become_user: "{{ nextcloud_websrv_user }}"
40 become: true
41 ansible.builtin.copy:
42 src: "{{ nextcloud_data_tmp }}/config/config.php"
43 dest: "{{ nextcloud_webroot }}/config/config.php"
44 remote_src: yes #because the config file is already in the nextcloud_tmp_path
45 owner: "{{ nextcloud_websrv_user }}"
46 group: "{{ nextcloud_websrv_user }}"
47 mode: '640' #or u=rwx,g=r,o=
48
49 - name: update nextcloud root dir symbolic link
50 become: true
51 ansible.builtin.file:
52 src: "{{ nextcloud_source }}"
53 dest: "{{ nextcloud_webroot }}/nextcloud"
54 owner: nextcloud
55 group: nextcloud
56 state: link
57 follow: false
58
59 - name: update nextcloud common app dir symbolic link
60 become: true
61 ansible.builtin.file:
62 src: "{{ nextcloud_common }}"
63 dest: "{{ nextcloud_webroot }}/common"
64 owner: nextcloud
65 group: nextcloud
66 state: link
67 follow: false
68
69 - name: deactivate nextcloud maintenance mode
70 become_user: "{{ nextcloud_websrv_user }}"
71 become: true
72 command: './console maintenance:mode --off'
73 args:
74 chdir: "{{ nextcloud_webroot }}"
75
76 - name: start webserver service
77 become: true
78 ansible.builtin.service:
79 name: "{{ nextcloud_websrv }}"
80 state: started
81
82 - name: Run occ upgrade
83 become_user: "{{ nextcloud_websrv_user }}"
84 become: true
85 command: './console upgrade'
86 args:
87 chdir: "{{ nextcloud_webroot }}"
88 register: nc_upgrade_result
89
90 - name: display upgrade result
91 debug:
92 var: nc_upgrade_result.stdout_lines
93
94 - name: wait for upgrade to complete
95 block:
96 - name: wait for nextcloud maintenance mode to become false
97 become_user: "{{ nextcloud_websrv_user }}"
98 become: true
99 command: php occ status
100 args:
101 chdir: "{{ nextcloud_webroot }}"
102 register: result
103 until: "'maintenance: false' in result.stdout"
104 retries: 15
105 delay: 20
106 rescue:
107 - name: deactivate maintenance mode manually
108 become_user: "{{ nextcloud_websrv_user }}"
109 become: true
110 command: php occ maintenance:mode --off
111 register: rescue
112 - name: display rescue
113 debug:
114 var: rescue.stdout_lines
115
116 - name: launch post-upgrade cleaning scripts
117 block:
118 - name: launch some occ cleaning command
119 become_user: "{{ nextcloud_websrv_user }}"
120 become: true
121 command: "php occ {{ command }}"
122 args:
123 chdir: "{{ nextcloud_webroot }}"
124 loop:
125 - db:add-missing-columns
126 - db:add-missing-indices
127 - db:add-missing-primary-keys
128 - dav:remove-invalid-shares
129 - files:cleanup
130 # - files:scan --all
131 loop_control:
132 loop_var: command
133 register: nc_indices_cmd
134
135 - name: display each occ commands result
136 debug:
137 msg: "{{ item.stdout_lines }}"
138 loop: "{{ nc_indices_cmd.results }}"
139 loop_control:
140 label: "{{ item.command }}"
141 when: "'Nextcloud is already latest version' not in nc_upgrade_result.stdout_lines"