From 925356cb873bdc6560f10a6693da74c8791e97ca Mon Sep 17 00:00:00 2001 From: rominique Date: Sun, 8 Oct 2023 21:33:28 +0200 Subject: [PATCH] =?utf8?q?mise=20=C3=A0=20jour=20du=20code=20selon=20ansib?= =?utf8?q?le-lint=20diverses=20corrections=20update=20nuage=20instance=20a?= =?utf8?q?=20=C3=A9t=C3=A9=20test=C3=A9=20avec=20succ=C3=A8s=20sur=20le=20?= =?utf8?q?nuage=20LHC=20(27.1.2)=20play=20move=20and=20restore=20pas=20enc?= =?utf8?q?ore=20au=20point?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- group_vars/all.yml | 1 - group_vars/vm.yml | 11 +- host_vars/ateliers.yml | 4 +- host_vars/ligatures.yml | 4 +- host_vars/localhost.yml | 1 + play_move_and_restore.yml | 52 +++++-- tasks/backup_from_ateliers.yml | 80 ++++++---- tasks/download_nextcloud_source.yml | 8 +- tasks/restore_to_vm.yml | 226 +++++++++++++++++----------- tasks/update_nextcloud.yml | 67 +++++---- templates/config_template.j2 | 35 +++++ update_nuage_instance.yml | 111 +++++++------- 12 files changed, 373 insertions(+), 227 deletions(-) create mode 100644 host_vars/localhost.yml create mode 100644 templates/config_template.j2 diff --git a/group_vars/all.yml b/group_vars/all.yml index 8eedb3e..826f029 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -1,6 +1,5 @@ --- # vars identiques sur tous les hosts -nextcloud_tmp_path: "/tmp/nextcloud_restore/{{ site_domain }}" nextcloud_data_path: "{{ nextcloud_webroot }}/data" nextcloud_websrv: nginx # si besoin de apache, ecraser cette valeur viaun fichier de variables groupe ou host nextcloud_repo_url: 'https://download.nextcloud.com/server/releases' \ No newline at end of file diff --git a/group_vars/vm.yml b/group_vars/vm.yml index bbad65b..8be1443 100644 --- a/group_vars/vm.yml +++ b/group_vars/vm.yml @@ -1,9 +1,16 @@ nextcloud_webroot: "{{ nextcloud_files_path }}/instance" nextcloud_websrv_user: www-data nextcloud_files_path: "/opt/nuage" -nextcloud_version: 23.0.12 +nouvelle_version: 23.0.12 # possble value: # 23.0.12 # 24.0.12 # 25.0.9 -# 26.0.4 \ No newline at end of file +# 26.0.4 +php_fpm_service: php8.0-fpm +nextcloud_tmp_path: "/tmp/nextcloud/{{ domain }}" +nextcloud_db_name: "php_nuage_{{ domain }}" +nextcloud_sources_files_path: "{{ nextcloud_files_path }}/sources" +nextcloud_common_files_path: "{{ nextcloud_files_path }}/common" +nextcloud_source: "{{ nextcloud_sources_files_path }}/nextcloud-{{ nouvelle_version }}" +nextcloud_common: "{{ nextcloud_common_files_path }}/nextcloud-{{ nouvelle_version }}" \ No newline at end of file diff --git a/host_vars/ateliers.yml b/host_vars/ateliers.yml index 4e5aa25..6d14985 100644 --- a/host_vars/ateliers.yml +++ b/host_vars/ateliers.yml @@ -1,3 +1,5 @@ nextcloud_webroot: "/home/www/data/org/heureux-cyclage/nuages/instances/{{ domain }}" nextcloud_websrv_user: php_nuages -nextcloud_db_name: "php_nuage_{{ domain }}" \ No newline at end of file +nextcloud_db_name: "php_nuage_{{ domain }}" +php_fpm_service: php8.0-fpm +nextcloud_tmp_path: "/home/nextcloud_tmp/{{ domain }}" \ No newline at end of file diff --git a/host_vars/ligatures.yml b/host_vars/ligatures.yml index 8fc2292..fb4d714 100644 --- a/host_vars/ligatures.yml +++ b/host_vars/ligatures.yml @@ -1,7 +1,7 @@ nextcloud_websrv_user: "php_{{ sigle }}_nuage" nextcloud_sources_files_path: "/home/sites/data/nextcloud/sources" nextcloud_common_files_path: "/home/sites/data/nextcloud/common" -nextcloud_version: "{{ nouvelle_version }}" nextcloud_webroot: "/home/sites/data/{{ tld }}/{{ domain }}/nuage" nextcloud_source: "{{ nextcloud_sources_files_path }}/nextcloud-{{ nouvelle_version }}" -nextcloud_common: "{{ nextcloud_common_files_path }}/nextcloud-{{ nouvelle_version }}" \ No newline at end of file +nextcloud_common: "{{ nextcloud_common_files_path }}/nextcloud-{{ nouvelle_version }}" +php_fpm_service: php8.2-fpm \ No newline at end of file diff --git a/host_vars/localhost.yml b/host_vars/localhost.yml new file mode 100644 index 0000000..391cefc --- /dev/null +++ b/host_vars/localhost.yml @@ -0,0 +1 @@ +nextcloud_tmp_path: "/tmp/nextcloud/{{ domain }}" \ No newline at end of file diff --git a/play_move_and_restore.yml b/play_move_and_restore.yml index 2640df1..13b31d3 100644 --- a/play_move_and_restore.yml +++ b/play_move_and_restore.yml @@ -1,22 +1,44 @@ --- # WARNING ATTENTION VERIFIER QU'IL Y A ASSEZ D'ESPACE SUR ATELIERS POUR CREER UNE ARCHIVES DES DATAS NEXTCLOUD -# commande pour lancer le playbook: ansible-playbook play_move_and_restore.yml -e "site_domain=cyclocoop" +# commande pour lancer le playbook: ansible-playbook play_move_and_restore.yml -u rominique + +- name: Play sur le controller + hosts: localhost + vars_prompt: + + - name: domain + prompt: 'Domaine du site à mettre à jour?(ex: heureux-cyclage)' + private: false -# play sur le controller -- hosts: localhost tasks: - - name: create nextcloud restore dir on controller - ansible.builtin.file: - path: "{{ nextcloud_tmp_path }}" - state: directory - mode: '777' - -# play sur ateliers -- hosts: ateliers + + - name: Rendre la var domain dispo pour le host ateliers + ansible.builtin.set_fact: + domain: "{{ domain }}" + delegate_to: "{{ item }}" + delegate_facts: true + loop: + - ateliers + - vm_debian11 + + - name: Create nextcloud restore dir on controller + ansible.builtin.file: + path: "{{ nextcloud_tmp_path }}" + state: directory + mode: '777' + +- name: Play sur ateliers + hosts: ateliers tasks: - - include_tasks: tasks/backup_from_ateliers.yml -# play sur vm_upgrade -- hosts: vm_debian11 + # - name: Include backup_from_ateliers + # ansible.builtin.include_tasks: tasks/backup_from_ateliers.yml + +- name: Play sur vm_debian11 + hosts: vm_debian11 tasks: - - include_tasks: tasks/restore_to_vm.yml \ No newline at end of file + + - name: Include restore_to_vm. + ansible.builtin.include_tasks: tasks/restore_to_vm.yml + +# clean file on controller? diff --git a/tasks/backup_from_ateliers.yml b/tasks/backup_from_ateliers.yml index af1e3ab..ea4dcc6 100644 --- a/tasks/backup_from_ateliers.yml +++ b/tasks/backup_from_ateliers.yml @@ -1,33 +1,44 @@ --- -- name: create nextcloud restore dir - ansible.builtin.file: +- name: Create nextcloud restore dir + ansible.builtin.file: path: "{{ nextcloud_tmp_path }}" state: directory mode: '777' -# - name: activate nextcloud maintenance mode -# become_user: "{{ nextcloud_websrv_user }}" -# become: true -# command: './console maintenance:mode --on' -# args: -# chdir: "{{ nextcloud_webroot }}" +- name: activate nextcloud maintenance mode + become_user: "{{ nextcloud_websrv_user }}" + become: true + command: './console maintenance:mode --on' + args: + chdir: "{{ nextcloud_webroot }}" -# - name: "Compress directory {{ nextcloud_data_path }} into {{ nextcloud_tmp_path }}/data.tar.gz" -# become_user: "{{ nextcloud_websrv_user }}" -# become: true -# community.general.archive: -# path: "{{ nextcloud_data_path }}" -# dest: "{{ nextcloud_tmp_path }}/data.tar.gz" -# format: gz -# force_archive: true -# mode: '777' - -- name: Create a dump of the postgreSQL database +- name: "Compress directory {{ nextcloud_data_path }} into {{ nextcloud_tmp_path }}/data.tar.gz" + become_user: "{{ nextcloud_websrv_user }}" + become: true + community.general.archive: + path: "{{ nextcloud_data_path }}" + dest: "{{ nextcloud_tmp_path }}/data.tar.gz" + format: gz + force_archive: true + mode: '777' + +- name: Create a dump of the postgreSQL database # noqa : command-instead-of-module become: true become_user: "{{ nextcloud_websrv_user }}" - command: "pg_dump -f {{ nextcloud_tmp_path }}/dump.sql -F c -O -b {{ nextcloud_db_name }}" + ansible.builtin.command: "pg_dump -f dump.sql -F c -O -b {{ nextcloud_db_name }}" + args: + chdir: "{{ nextcloud_tmp_path }}" + +- name: copy nextcloud config file + become_user: "{{ nextcloud_websrv_user }}" + become: true + ansible.builtin.copy: + src: "{{ nextcloud_webroot }}/config/config.php" + dest: "{{ nextcloud_tmp_path }}/config.php" + remote_src: yes # because the config file is already in the nextcloud_tmp_path + mode: '755' -- name: add read permissions to created tmp files +- name: Add read permissions to created tmp files become: true become_user: root ansible.builtin.file: @@ -35,24 +46,35 @@ owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" state: directory - recurse: yes - mode: '644' #or 'u=rw,g=r,o=r' + recurse: true + mode: '755' # or 'u=rw,g=r,o=r' - name: Fetch nextcloud_data from atelier to ansible controller + # become: true + # become_user: "{{ nextcloud_websrv_user }}" + ansible.builtin.fetch: + src: "{{ item }}" + dest: "/tmp/nextcloud/{{ domain }}/" + flat: true + loop: + - "{{ nextcloud_tmp_path }}/dump.sql" + - "{{ nextcloud_tmp_path }}/data.tar.gz" + - "{{ nextcloud_tmp_path }}/config.php" + +- name: Supprimer les fichiers temporaires du serveur ateliers become: true become_user: "{{ nextcloud_websrv_user }}" - fetch: - src: "{{ item }}" - dest: "{{ nextcloud_tmp_path }}/" - flat: yes + ansible.builtin.file: + path: "{{ item }}" + state: absent loop: - "{{ nextcloud_tmp_path }}/dump.sql" - "{{ nextcloud_tmp_path }}/data.tar.gz" - - "{{ nextcloud_webroot }}/config/config.php" + - "{{ nextcloud_tmp_path }}/config.php" # - name: deactivate nextcloud maintenance mode # become_user: "{{ nextcloud_websrv_user }}" # become: true # command: './console maintenance:mode --off' # args: -# chdir: "{{ nextcloud_webroot }}" \ No newline at end of file +# chdir: "{{ nextcloud_webroot }}" \ No newline at end of file diff --git a/tasks/download_nextcloud_source.yml b/tasks/download_nextcloud_source.yml index e05ada3..77a46c6 100644 --- a/tasks/download_nextcloud_source.yml +++ b/tasks/download_nextcloud_source.yml @@ -4,7 +4,7 @@ ansible.builtin.get_url: url: "{{ nextcloud_repo_url }}/nextcloud-{{ nouvelle_version }}.tar.bz2" dest: "{{ nextcloud_sources_files_path }}/" - mode: '755' #or u=rwx,g=rx,o=rx + mode: '755' # or u=rwx,g=rx,o=rx checksum: "md5:{{ nextcloud_repo_url }}/nextcloud-{{ nouvelle_version }}.tar.bz2.md5" - name: create nextcloud source dir @@ -13,7 +13,7 @@ ansible.builtin.file: path: "{{ nextcloud_sources_files_path }}/nextcloud-{{ nouvelle_version }}" state: directory - mode: '755' #or u=rwx,g=rx,o=rx + mode: '755' # or u=rwx,g=rx,o=rx - name: Extract downloaded nextcloud source become: true @@ -21,7 +21,7 @@ ansible.builtin.unarchive: src: "{{ nextcloud_sources_files_path }}/nextcloud-{{ nouvelle_version }}.tar.bz2" dest: "{{ nextcloud_sources_files_path }}/" -# mode: '755' #or u=rwx,g=rx,o=rx +# mode: '755' # or u=rwx,g=rx,o=rx remote_src: yes - name: "rename nextloud dir to nextcloud-{{ nouvelle_version }}" @@ -30,7 +30,7 @@ ansible.builtin.copy: src: "{{ nextcloud_sources_files_path }}/nextcloud/" dest: "{{ nextcloud_sources_files_path }}/nextcloud-{{ nouvelle_version }}" - remote_src: yes #because the config file is already in the nextcloud_tmp_path + remote_src: yes # because the config file is already in the nextcloud_tmp_path - name: deleted downloaded nextcloud files become: true diff --git a/tasks/restore_to_vm.yml b/tasks/restore_to_vm.yml index ca771cb..4998bc2 100644 --- a/tasks/restore_to_vm.yml +++ b/tasks/restore_to_vm.yml @@ -1,141 +1,187 @@ --- -- name: clean nextcloud restore dir content - ansible.builtin.file: - path: "{{ nextcloud_tmp_path }}" - state: absent +# - name: Clean nextcloud restore dir content +# become_user: "{{ nextcloud_websrv_user }}" +# become: true +# ansible.builtin.file: +# 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 + path: "{{ item }}" + state: directory + loop: + - "{{ nextcloud_tmp_path }}" + - "{{ nextcloud_webroot }}/data" -- name: Copy the file from ansible controller to vm host - copy: - src: "{{ item }}" - dest: "{{ nextcloud_data_path }}" - loop: - - "{{ nextcloud_tmp_path }}/dump.sql" - - "{{ nextcloud_tmp_path }}/data.tar.gz" - - "{{ nextcloud_tmp_path }}/config.php" +# - 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: Extract nc data archive - ansible.builtin.unarchive: - src: "{{ nextcloud_data_tmp }}" - dest: "{{ nextcloud_data_path }}" +# - name: Extract nc data archive +# become_user: "{{ nextcloud_websrv_user }}" +# become: true +# ansible.builtin.unarchive: +# src: "{{ nextcloud_tmp_path }}/data.tar.gz" +# dest: "{{ nextcloud_webroot }}/data" -- name: stop webserver service +- 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.sql" + loop: + - absent + - present + - restore + +# - name: Restore psql dump # noqa : command-instead-of-module +# become: true +# become_user: postgres +# ansible.builtin.command: "pg_restore -c -F c -O -x -d {{ nextcloud_db_name }} {{ nextcloud_tmp_path }}/dump.pgc" + +- name: Update data fingerprint post db restore # noqa : command-instead-of-module become_user: "{{ nextcloud_websrv_user }}" - command: "pg_restore -F c -O -d {{ nextcloud_db_name }} {{ nextcloud_tmp_path }}/dump.sql" + become: true + ansible.builtin.command: './console maintenance:data-fingerprint' + args: + chdir: "{{ nextcloud_webroot }}" -- name: copy config.php over from old instance +- name: create nextcloud config become_user: "{{ nextcloud_websrv_user }}" become: true - ansible.builtin.copy: - src: "{{ nextcloud_data_tmp }}/config/config.php" + ansible.builtin.template: + src: templates/config_template.j2 dest: "{{ nextcloud_webroot }}/config/config.php" - remote_src: yes #because the config file is already in the nextcloud_tmp_path owner: "{{ nextcloud_websrv_user }}" group: "{{ nextcloud_websrv_user }}" - mode: '640' #or u=rwx,g=r,o= + mode: '640' # or u=rwx,g=r,o= + +- 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_source }}" dest: "{{ nextcloud_webroot }}/nextcloud" - owner: nextcloud - group: nextcloud + owner: "{{ nextcloud_websrv_user }}" + group: "{{ nextcloud_websrv_user }}" state: link follow: false -- name: update nextcloud common app dir symbolic link +- name: Update nextcloud common app dir symbolic link + become_user: "{{ nextcloud_websrv_user }}" become: true ansible.builtin.file: src: "{{ nextcloud_common }}" dest: "{{ nextcloud_webroot }}/common" - owner: nextcloud - group: nextcloud + owner: "{{ nextcloud_websrv_user }}" + group: "{{ nextcloud_websrv_user }}" state: link follow: false -- name: deactivate nextcloud maintenance mode - become_user: "{{ nextcloud_websrv_user }}" - become: true - command: './console maintenance:mode --off' - args: - chdir: "{{ nextcloud_webroot }}" - -- name: start webserver service +- name: Start webserver service become: true ansible.builtin.service: name: "{{ nextcloud_websrv }}" state: started -- name: Run occ upgrade +- 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 + + - 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: 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 }}" - when: "'Nextcloud is already latest version' not in nc_upgrade_result.stdout_lines" \ No newline at end of file + + - name: Launch some occ cleaning command + 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 }}" diff --git a/tasks/update_nextcloud.yml b/tasks/update_nextcloud.yml index e541c37..68eae33 100644 --- a/tasks/update_nextcloud.yml +++ b/tasks/update_nextcloud.yml @@ -1,11 +1,10 @@ ---- -- name: stop webserver service +- name: Stop webserver service become: true ansible.builtin.service: name: "{{ nextcloud_websrv }}" state: stopped - -- name: update nextcloud root dir symbolic link + +- name: Update nextcloud root dir symbolic link become: true ansible.builtin.file: src: "{{ nextcloud_source }}" @@ -15,7 +14,7 @@ state: link follow: false -- name: update nextcloud common app dir symbolic link +- name: Update nextcloud common app dir symbolic link become: true ansible.builtin.file: src: "{{ nextcloud_common }}" @@ -25,43 +24,51 @@ state: link follow: false -- name: start webserver service +- name: Start webserver service become: true ansible.builtin.service: name: "{{ nextcloud_websrv }}" state: started -- name: Run nextcloud upgrade script +- name: Run nextcloud upgrade script # 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 +- name: Display upgrade result debug: var: nc_upgrade_result.stdout_lines -- block: - - name: wait for nextcloud maintenance mode to become false - become_user: "{{ nextcloud_websrv_user }}" - become: true - command: ./console status - args: - chdir: "{{ nextcloud_webroot }}" - register: result - until: "'maintenance: false' in result.stdout" - retries: 15 - delay: 20 +- name: Bloque de tâches contrôlant la fin de la maintenance de mise à jour + block: + - 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: ./console maintenance:mode --off - args: - chdir: "{{ nextcloud_webroot }}" - register: rescue - - name: display rescue - debug: - var: rescue.stdout_lines \ No newline at end of file + - 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: Reload php fpm service + become: true + ansible.builtin.service: + name: "{{ php_fpm_service }}" + state: reloaded \ No newline at end of file diff --git a/templates/config_template.j2 b/templates/config_template.j2 new file mode 100644 index 0000000..88db3f4 --- /dev/null +++ b/templates/config_template.j2 @@ -0,0 +1,35 @@ + false, + 'trusted_domains' => + array ( + 0 => 'nuage.migration.org', + ), + 'datadirectory' => '{{ nextcloud_webroot}}/data', + 'overwrite.cli.url' => 'https://nuage.migration.org', + 'dbtype' => 'pgsql', + 'dbname' => '{{ nextcloud_db_name }}', + 'dbhost' => '/run/postgresql', + 'dbport' => '', + 'dbtableprefix' => 'oc_', + 'dbuser' => '{{ nextcloud_websrv_user}}', + 'dbpassword' => '', + 'installed' => true, + 'apps_paths' => + array ( + 0 => + array ( + 'path' => '{{ nextcloud_webroot}}/nextcloud/apps/', + 'url' => '/apps', + 'writable' => false, + ), + 1 => + array ( + 'path' => '{{ nextcloud_webroot}}/common/', + 'url' => '/common-apps', + 'writable' => false, + ), + ), + 'theme' => '', + 'loglevel' => 2, +); diff --git a/update_nuage_instance.yml b/update_nuage_instance.yml index f68ce5c..eb40ebb 100644 --- a/update_nuage_instance.yml +++ b/update_nuage_instance.yml @@ -1,69 +1,74 @@ --- -# 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 -# 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.0)' + private: false - - 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 + + - name: domain + prompt: 'Domaine du site à mettre à jour?(ex: heureux-cyclage)' + private: false + + - name: sigle + prompt: 'Sigle du site à mettre à jour?(ex: lhc)' + private: false - - 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: 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: Obtenir l'ancienne version # noqa : command-instead-of-module + become_user: "{{ nextcloud_websrv_user }}" + become: true + ansible.builtin.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: 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 - become_user: nextcloud + - 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: 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 + - 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 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: Include update tasks + ansible.builtin.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: Display upgrade result + ansible.builtin.debug: + msg: "Le nuage de {{ domain }} a été mis à jour avec la nouvelle version {{ nouvelle_version }}" -- 2.20.1