decorrelation SITE et sous domain
[lhc/ansible.git] / update_nuage_instance.yml
index f68ce5c..8760914 100644 (file)
 ---
-# commande pour lancer le playbook: ansible-playbook update_nuage_instance.yml -e "site_domain=cyclocoop"
+# commande pour lancer le playbook: ansible-playbook update_nuage_instance.yml
+# ATTENTION pour l'instance "test-nuage" il faut lancer la commande ci-dessous pour lancer le playbook:
+# ansible-playbook update_nuage_instance.yml --extra-vars "test_nuage=true"
 
-# promp pour définir les variables
-- hosts: ligatures
+- name: Promp pour définir les variables
+  hosts: ligatures
   vars_prompt:
-  - name: nouvelle_version
-    prompt: 'Nouvelle version nextcloud à télécharger?(ex: 27.1.0)'
-    private: false
 
-  - name: tld
-    prompt: 'TLD du site à mettre à jour?(ex: org)'
-    private: false
+    - name: nouvelle_version
+      prompt: 'Nouvelle version nextcloud à télécharger?(ex: 27.1.8)'
+      private: false
+      default: "27.1.8"
 
-  - name: domain
-    prompt: 'Domaine du site à mettre à jour?(ex: heureux-cyclage)'
-    private: false
+    - name: TLD
+      prompt: 'TLD du site à mettre à jour?(ex: org)'
+      private: false
+      default: "org"
+
+    - name: DOMAIN
+      prompt: 'Domaine du site à mettre à jour?(ex: heureux-cyclage)'
+      private: false
+      default: "heureux-cyclage"
+
+    - name: SIGLE
+      prompt: 'Sigle du site à mettre à jour?(ex: lhc)'
+      private: false
+      default: "lhc"
 
-  - name: sigle
-    prompt: 'Sigle du site à mettre à jour?(ex: lhc)'
-    private: false
   pre_tasks:
-  - name: Vérif si la source nextcloud est téléchargé
-    become: true
-    ansible.builtin.stat:
-      path: "{{ nextcloud_source }}"
-    register: new_nextcloud_source
-
-  - name: Vérif si le dossier common app est créé
-    become: true
-    ansible.builtin.stat:
-      path: "{{ nextcloud_common }}"
-    register: new_nextcloud_common
-
-  - name: obtenir l'ancienne version
-    become_user: "{{ nextcloud_websrv_user }}"
-    become: true
-    command: '{{ nextcloud_webroot }}/console status --output=json'
-    register: result
-
-  - name: enregistrer l'ancienne version
-    set_fact: 
-      ancienne_version: "{{ tmp.versionstring }}"
-    vars:
-      tmp: "{{ result.stdout | from_json }}"
+
+    - name: Vérif si la source nextcloud est téléchargée
+      become: true
+      ansible.builtin.stat:
+        path: "{{ nextcloud_source }}"
+      register: new_nextcloud_source
+
+    - name: Vérif' si le dossier common app est créé
+      become: true
+      ansible.builtin.stat:
+        path: "{{ nextcloud_common }}"
+      register: new_nextcloud_common
+
+    - name: specific test-nuage tasks
+      ansible.builtin.set_fact:
+        nextcloud_webroot: "/home/sites/data/{{ TLD }}/{{ DOMAIN }}/test-nuage"
+        nextcloud_websrv_user: site_lhc_test-nuage
+        nextcloud_php_user: php_lhc_test_nuage
+      when: test_nuage is defined
+
+    - name: Obtenir l'ancienne version  # noqa : command-instead-of-module
+      become_user: "{{ nextcloud_php_user }}"
+      become: true
+      ansible.builtin.command: '{{ nextcloud_webroot }}/console status --output=json'
+      register: result
+
+    - name: Enregistrer l'ancienne version
+      ansible.builtin.set_fact:
+        ancienne_version: "{{ tmp.versionstring }}"
+      vars:
+        tmp: "{{ result.stdout | from_json }}"
 
   tasks:
 
-  - include_tasks: tasks/download_nextcloud_source.yml
-    when: not new_nextcloud_source.stat.exists
-    vars:
-      ansible_become: true
+    - name: Include download_nextcloud_source tasks
+      ansible.builtin.include_tasks: tasks/download_nextcloud_source.yml
+      when: not new_nextcloud_source.stat.exists
+      vars:
+        ansible_become: true
+        become_user: nextcloud
+
+    - name: Create new app common folder from old version one
       become_user: nextcloud
+      become: true
+      ansible.builtin.copy:
+        src: "{{ nextcloud_common_files_path }}/nextcloud-{{ ancienne_version }}/"
+        dest: "{{ nextcloud_common_files_path }}/nextcloud-{{ nouvelle_version }}"
+        remote_src: true # because the copy is from remote host to remote host
+        mode: '754' # or 'u=rwx,g=rx,o=r'
+      when: not new_nextcloud_common.stat.exists
+
+    - name: Include backup tasks
+      ansible.builtin.include_tasks: tasks/backup_nextcloud.yml
+
+    - name: block upgrade
+      block:
+
+        - name: Include update tasks
+          ansible.builtin.include_tasks: tasks/update_nextcloud.yml
+
+        - name: Display upgrade result
+          ansible.builtin.debug:
+            msg: "Le nuage de {{ DOMAIN }} a été mis à jour avec la nouvelle version {{ nouvelle_version }}"
+
+      always: 
+
+        - name: Ask if restore is necessary
+          ansible.builtin.pause:
+            prompt: 'Voulez-vous restaurer la version precedente?(oui/non)'
+            echo: true
+          register: restore_promp
+
+        - name: Definir config_ss_domain
+          ansible.builtin.set_fact:
+            restore: "{{ restore_promp.user_input | default(non) }}"
 
-  - name: create new app common folder from old version one
-    become_user: nextcloud
-    become: true
-    ansible.builtin.copy: 
-      src: "{{ nextcloud_common_files_path }}/nextcloud-{{ ancienne_version }}/"
-      dest: "{{ nextcloud_common_files_path }}/nextcloud-{{ nouvelle_version }}"
-      remote_src: yes #because the config file is already in the nextcloud_tmp_path
-      mode: '754' #or 'u=rwx,g=rx,o=r'
-    when: not new_nextcloud_common.stat.exists
-
-  - include_tasks: tasks/update_nextcloud.yml
-
-  - name: display upgrade result
-    debug:
-      msg: "Le nuage de {{ domain }} a été mis à jour avec la nouvelle version {{ nouvelle_version }}"
+        - name: Include update tasks
+          ansible.builtin.include_tasks: tasks/restore_nextcloud.yml
+          when: restore == 'oui'
\ No newline at end of file