115 lines
4.5 KiB
YAML
115 lines
4.5 KiB
YAML
# This playbook updates the OneLab Enterprise to latest version or a chosen version in one step
|
|
---
|
|
- name: Updating OneLab
|
|
hosts: localhost
|
|
gather_facts: yes
|
|
vars:
|
|
main_path: '../../../../..'
|
|
onelab_path: '../../../../../onelab'
|
|
|
|
vars_prompt:
|
|
- name: "userchoice"
|
|
prompt: "Confirm OneLab update: yes/no"
|
|
private: no
|
|
|
|
tasks:
|
|
|
|
# Choice to proceed or stop the update process
|
|
- name: Aborting the update process
|
|
fail:
|
|
msg: Aborting the update process
|
|
when: userchoice != "yes"
|
|
|
|
# Gather latest version information
|
|
- name: Fetching OneLab latest version details from the repository
|
|
uri:
|
|
url: "https://hub.andrewalliance.com/enterprise/version.json"
|
|
return_content: yes
|
|
validate_certs: no
|
|
register: latest_version
|
|
become: true
|
|
when: version is undefined
|
|
- set_fact:
|
|
latest: "{{ (latest_version.content | from_json).version }}"
|
|
when: version is undefined
|
|
|
|
- name: Checking OneLab current version
|
|
fail:
|
|
msg: OneLab is already up-to-date (1.27.0)
|
|
when: (version is undefined) and (latest == "1.27.0")
|
|
|
|
- name: Starting OneLab update to {{ version | default(latest) }}
|
|
debug:
|
|
msg: Version {{ version | default(latest) }}
|
|
|
|
# Remove installer bundles if it exists already, then download & unzip
|
|
- name: Removing the bundle if it already exists
|
|
file:
|
|
state: absent
|
|
path: "{{ item }}"
|
|
with_items:
|
|
- "{{ main_path }}/onelab-enterprise-installer-{{ version | default(latest)}}"
|
|
- "{{ main_path }}/onelab-enterprise-installer-{{ version | default(latest)}}.zip"
|
|
become: true
|
|
|
|
- name: Downloading the installer bundle
|
|
shell: wget --no-check-certificate https://hub.andrewalliance.com/enterprise/onelab-enterprise-installer-{{ version | default(latest)}}.zip -P {{ main_path }}
|
|
become: true
|
|
|
|
- name: Unzip the installer bundle
|
|
shell: unzip {{ main_path }}/onelab-enterprise-installer-{{ version | default(latest)}}.zip -d {{ main_path }}/onelab-enterprise-installer-{{ version | default(latest)}}
|
|
become: true
|
|
|
|
- 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"
|
|
|
|
# Start Proxy (maintenance page) if OneLab was running
|
|
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/start-proxy.yml"
|
|
when: stack_count.stdout != "0"
|
|
|
|
# Perform OneLab backup
|
|
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/backup-task.yml"
|
|
|
|
# Perform OneLab update
|
|
- include_tasks: "{{ main_path }}/onelab-enterprise-installer-{{ version | default(latest)}}/app/playbooks/tasks/install-task.yml"
|
|
vars:
|
|
main_path: '../../../../..'
|
|
onelab_path: '../../../../../onelab'
|
|
installer_path: '../../../../../onelab-enterprise-installer-{{ version | default(latest)}}'
|
|
|
|
# Load configuration
|
|
- include_vars:
|
|
file: "{{ onelab_path }}/configurations.yml"
|
|
|
|
# Perform reconfiguration
|
|
# Use dynamic path (variable) to force dynamic loading of this new task
|
|
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/reconfigure-task.yml"
|
|
|
|
# Remove installer bundles
|
|
- name: Removing the installer
|
|
file:
|
|
state: absent
|
|
path: "{{ item }}"
|
|
with_items:
|
|
- "{{ main_path }}/onelab-enterprise-installer-{{ version | default(latest)}}"
|
|
- "{{ main_path }}/onelab-enterprise-installer-{{ version | default(latest)}}.zip"
|
|
become: true
|
|
|
|
# Stop Proxy (maintenance page) if OneLab was running
|
|
# Use dynamic path (variable) to force dynamic loading of this new task
|
|
- include_tasks: "{{ onelab_path }}/installation/latest/app/playbooks/tasks/stop-proxy.yml"
|
|
when: stack_count.stdout != "0"
|
|
|
|
# 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" |