ajout d'un garde fou pour la creation du dossier app common
[lhc/ansible.git] / update_nuage_instance.yml
1 ---
2 # commande pour lancer le playbook: ansible-playbook update_nuage_instance.yml
3 # ATTENTION pour l'instance "test-nuage" il faut lancer la commande ci-dessous pour lancer le playbook:
4 # ansible-playbook update_nuage_instance.yml --extra-vars "test_nuage=true"
5
6 - name: Promp pour définir les variables
7 hosts: ligatures
8 vars_prompt:
9
10 - name: nouvelle_version
11 prompt: 'Nouvelle version nextcloud à télécharger?(ex: 27.1.8)'
12 private: false
13 default: "28.0.6"
14
15 - name: TLD
16 prompt: 'TLD du site à mettre à jour?(ex: org)'
17 private: false
18 default: "org"
19
20 - name: DOMAIN
21 prompt: 'Domaine du site à mettre à jour?(ex: heureux-cyclage)'
22 private: false
23 default: "heureux-cyclage"
24
25 - name: SIGLE
26 prompt: 'Sigle du site à mettre à jour?(ex: lhc)'
27 private: false
28 default: "lhc"
29
30 pre_tasks:
31
32 - name: Vérif si la source nextcloud est téléchargée
33 become: true
34 ansible.builtin.stat:
35 path: "{{ nextcloud_source }}"
36 register: new_nextcloud_source
37
38 - name: Vérif' si le dossier common app est créé
39 become: true
40 ansible.builtin.stat:
41 path: "{{ nextcloud_common }}"
42 register: new_nextcloud_common
43
44 - name: specific test-nuage tasks
45 ansible.builtin.set_fact:
46 nextcloud_webroot: "/home/sites/data/{{ TLD }}/{{ DOMAIN }}/test-nuage"
47 nextcloud_websrv_user: site_lhc_test-nuage
48 nextcloud_php_user: php_lhc_test_nuage
49 when: test_nuage is defined
50
51 - name: Obtenir l'ancienne version # noqa : command-instead-of-module
52 become_user: "{{ nextcloud_php_user }}"
53 become: true
54 ansible.builtin.command: '{{ nextcloud_webroot }}/console status --output=json'
55 register: result
56
57 - name: Enregistrer l'ancienne version
58 ansible.builtin.set_fact:
59 ancienne_version: "{{ tmp.versionstring }}"
60 vars:
61 tmp: "{{ result.stdout | from_json }}"
62
63 tasks:
64
65 - name: Include download_nextcloud_source tasks
66 ansible.builtin.include_tasks: tasks/download_nextcloud_source.yml
67 when: not new_nextcloud_source.stat.exists
68 vars:
69 ansible_become: true
70 become_user: nextcloud
71
72 # on met à jour une instance uniquement si test-nuage a préalablement été mis à jour dans cette version
73
74 - name: fail si test-nuage n'a pas été mis à jour avec cette version
75 ansible.builtin.fail:
76 msg: 'il faut déjà mettre à jour test-nuage avec cette version'
77 when: not new_nextcloud_common.stat.exists and test_nuage is not defined
78
79 - name: Création du dossier common de la nouvelle version en utilisant les apps de l'instance test-nuage
80 become: true
81 ansible.builtin.copy:
82 src: "/home/sites/data/org/heureux-cyclage/test-nuage/apps/"
83 dest: "{{ nextcloud_common_files_path }}/nextcloud-{{ nouvelle_version }}"
84 remote_src: true # because the copy is from remote host to remote host
85 mode: '754' # or 'u=rwx,g=rx,o=r'
86 owner: nextcloud
87 group: nextcloud
88 when: not new_nextcloud_common.stat.exists and test_nuage is defined
89
90 - name: Include backup tasks
91 ansible.builtin.include_tasks: tasks/backup_nextcloud.yml
92
93 - name: block upgrade
94 block:
95
96 - name: Include update tasks
97 ansible.builtin.include_tasks: tasks/update_nextcloud.yml
98
99 - name: Display upgrade result
100 ansible.builtin.debug:
101 msg: "Le nuage de {{ DOMAIN }} a été mis à jour avec la nouvelle version {{ nouvelle_version }}"
102
103 always:
104
105 - name: Demande si besoin de restaurer la version précédente
106 ansible.builtin.pause:
107 prompt: 'Voulez-vous restaurer la version precedente?(oui/non)'
108 echo: true
109 register: restore_promp
110
111 - name: Definir la variable restore
112 ansible.builtin.set_fact:
113 restore: "{{ restore_promp.user_input | default(non) }}"
114
115 - name: Include restore tasks si restore = oui
116 ansible.builtin.include_tasks: tasks/restore_nextcloud.yml
117 when: restore == 'oui'