Files
onelab-k8s-1.27/resources/restore/restore.yml
2026-03-20 10:15:15 +01:00

105 lines
3.4 KiB
YAML

---
- name: Restoring OneLab (1.27.0)
hosts: localhost
vars_prompt:
- name: "userchoice"
prompt: "Confirm OneLab 1.27.0 restore: yes/no"
private: no
vars:
onelab_path: '../..'
onelab_images_path: '../../../onelab-images-1.27.0.tar.gz'
main_path: '../../..'
tasks:
- name: Checking if the OneLab images bundle is existing
stat:
path: "{{ onelab_images_path }}"
get_checksum: no
register: docker_images_tar
- name: Aborting the restore process
fail:
msg: Aborting the restore process
when: userchoice != "yes"
# Stop OneLab if OneLab is running
- name: Checking if OneLab is running
shell: docker stack ls | grep 'onelab' | wc -l
become: true
register: stack_count
# Stop OneLab (unkown version) if OneLab is running
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/stop-onelab.yml"
when: stack_count.stdout != "0"
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/stop-proxy.yml"
when: stack_count.stdout != "0"
# Load docker images
- name: Loading Docker images
debug:
msg:
- "Loading images could take few minutes, please do not interrupt"
when: (docker_images_tar is defined) and (docker_images_tar.stat.exists)
- name: Loading OneLab images from the tar file
shell:
docker load --input {{ onelab_images_path }}
become: true
when: (docker_images_tar is defined) and (docker_images_tar.stat.exists)
- name: Unzipping backup
shell: |
tar xzvf ./onelab.tar.gz -C ./../..
become: true
- name: Cleaning latest installation
ansible.builtin.file:
path: "{{ onelab_path }}/installation/latest"
state: absent
- name: Flagging restored version as current
ansible.builtin.copy:
src: ../../installation/1.27.0/
dest: ../../installation/latest
directory_mode: no
remote_src: yes
# Load configuration
- include_vars:
file: "{{ onelab_path }}/configurations.yml"
# Perform reconfiguration
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/reconfigure-task.yml"
# Checking if volumes are existing
- name: Getting the list of docker volumes
shell: docker volume ls
become: true
register: volumes_result
# Removing volumes
- name: Resetting postgres database & cleaning cache
shell: |
docker volume rm onelab_pgdata -f
docker volume rm onelab_rabbitmq_data -f
become: true
when: "'rabbitmq' in volumes_result.stdout or 'pgdata' in volumes_result.stdout"
# Restoring database
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/start-db-only.yml"
- name: Restoring database
shell: >
docker exec -i $(docker ps --filter "name=onelab_db|onelab-db" -q) pg_restore -Upostgres -dpostgres -v -Fc < ./db.tar.gz
become: true
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/stop-db-only.yml"
# Start OneLab if OneLab was running
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/start-proxy.yml"
when: stack_count.stdout != "0"
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/start-onelab.yml"
when: stack_count.stdout != "0"