----
-# 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"
-
-- name: Promp pour définir les variables
- hosts: ligatures
- vars_prompt:
-
- - name: nouvelle_version
- prompt: 'Nouvelle version nextcloud à télécharger?(ex: 27.1.8)'
- private: false
- default: "28.0.6"
-
- - 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"
-
- pre_tasks:
-
- - 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:
-
- - 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
-
-# on met à jour une instance uniquement si test-nuage a préalablement été mis à jour dans cette version
-
- - name: fail si test-nuage n'a pas été mis à jour avec cette version
- ansible.builtin.fail:
- msg: 'il faut déjà mettre à jour test-nuage avec cette version'
- when: not new_nextcloud_common.stat.exists and test_nuage is not defined
-
- - name: Création du dossier common de la nouvelle version en utilisant les apps de l'instance test-nuage
- become: true
- ansible.builtin.copy:
- src: "/home/sites/data/org/heureux-cyclage/test-nuage/apps/"
- 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'
- owner: nextcloud
- group: nextcloud
- when: not new_nextcloud_common.stat.exists and test_nuage is defined
-
- - 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: Demande si besoin de restaurer la version précédente
- ansible.builtin.pause:
- prompt: 'Voulez-vous restaurer la version precedente?(oui/non)'
- echo: true
- register: restore_promp
-
- - name: Definir la variable restore
- ansible.builtin.set_fact:
- restore: "{{ restore_promp.user_input | default(non) }}"
-
- - name: Include restore tasks si restore = oui
- ansible.builtin.include_tasks: tasks/restore_nextcloud.yml
- when: restore == 'oui'
\ No newline at end of file