|
@@ -1,4 +1,57 @@
|
|
|
---
|
|
|
+- name: Update deployment type
|
|
|
+ hosts: OSEv3
|
|
|
+ roles:
|
|
|
+ - openshift_facts
|
|
|
+ post_tasks: # technically tasks are run after roles, but post_tasks is a bit more explicit.
|
|
|
+ - openshift_facts:
|
|
|
+ role: common
|
|
|
+ local_facts:
|
|
|
+ deployment_type: "{{ deployment_type }}"
|
|
|
+
|
|
|
+- name: Verify upgrade can proceed
|
|
|
+ hosts: masters
|
|
|
+ tasks:
|
|
|
+ # Checking the global deployment type rather than host facts, this is about
|
|
|
+ # what the user is requesting.
|
|
|
+ - fail: msg="Deployment type enterprise not supported for upgrade"
|
|
|
+ when: deployment_type == "enterprise"
|
|
|
+
|
|
|
+- name: Backup etcd
|
|
|
+ hosts: masters
|
|
|
+ vars:
|
|
|
+ embedded_etcd: "{{ openshift.master.embedded_etcd }}"
|
|
|
+ timestamp: "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"
|
|
|
+ roles:
|
|
|
+ - openshift_facts
|
|
|
+ tasks:
|
|
|
+ - stat: path=/var/lib/openshift
|
|
|
+ register: var_lib_openshift
|
|
|
+ - name: Create origin symlink if necessary
|
|
|
+ file: src=/var/lib/openshift/ dest=/var/lib/origin state=link
|
|
|
+ when: var_lib_openshift.stat.exists == True
|
|
|
+ - name: Check available disk space for etcd backup
|
|
|
+ # We assume to be using the data dir for all backups.
|
|
|
+ shell: >
|
|
|
+ df --output=avail -k {{ openshift.common.data_dir }} | tail -n 1
|
|
|
+ register: avail_disk
|
|
|
+
|
|
|
+ - name: Check current embedded etcd disk usage
|
|
|
+ shell: >
|
|
|
+ du -k {{ openshift.master.etcd_data_dir }} | tail -n 1 | cut -f1
|
|
|
+ register: etcd_disk_usage
|
|
|
+ when: embedded_etcd | bool
|
|
|
+
|
|
|
+ - name: Abort if insufficient disk space for etcd backup
|
|
|
+ fail: msg="{{ etcd_disk_usage.stdout }} Kb disk space required for etcd backup, {{ avail_disk.stdout }} Kb available."
|
|
|
+ when: (embedded_etcd | bool) and (etcd_disk_usage.stdout|int > avail_disk.stdout|int)
|
|
|
+ - name: Install etcd (for etcdctl)
|
|
|
+ yum: pkg=etcd state=latest
|
|
|
+ - name: Generate etcd backup
|
|
|
+ command: etcdctl backup --data-dir={{ openshift.master.etcd_data_dir }} --backup-dir={{ openshift.common.data_dir }}/etcd-backup-{{ timestamp }}
|
|
|
+ - name: Display location of etcd backup
|
|
|
+ debug: msg="Etcd backup created in {{ openshift.common.data_dir }}/etcd-backup-{{ timestamp }}"
|
|
|
+
|
|
|
- name: Upgrade base package on masters
|
|
|
hosts: masters
|
|
|
roles:
|
|
@@ -9,22 +62,58 @@
|
|
|
- name: Upgrade base package
|
|
|
yum: pkg={{ openshift.common.service_type }}{{ openshift_version }} state=latest
|
|
|
|
|
|
-- name: Re-Run cluster configuration to apply latest configuration changes
|
|
|
- include: ../../common/openshift-cluster/config.yml
|
|
|
+- name: Evaluate oo_first_master
|
|
|
+ hosts: localhost
|
|
|
vars:
|
|
|
- g_etcd_group: "{{ 'etcd' }}"
|
|
|
g_masters_group: "{{ 'masters' }}"
|
|
|
- g_nodes_group: "{{ 'nodes' }}"
|
|
|
- openshift_cluster_id: "{{ cluster_id | default('default') }}"
|
|
|
- openshift_deployment_type: "{{ deployment_type }}"
|
|
|
+ tasks:
|
|
|
+ - name: Evaluate oo_first_master
|
|
|
+ add_host:
|
|
|
+ name: "{{ groups[g_masters_group][0] }}"
|
|
|
+ groups: oo_first_master
|
|
|
+ ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"
|
|
|
+ ansible_sudo: "{{ g_sudo | default(omit) }}"
|
|
|
+ when: g_masters_group in groups and (groups[g_masters_group] | length) > 0
|
|
|
+
|
|
|
+# TODO: ideally we would check the new version, without installing it. (some
|
|
|
+# kind of yum repoquery? would need to handle openshift -> atomic-openshift
|
|
|
+# package rename)
|
|
|
+- name: Perform upgrade version checking
|
|
|
+ hosts: oo_first_master
|
|
|
+ tasks:
|
|
|
+ - name: Determine new version
|
|
|
+ command: >
|
|
|
+ rpm -q --queryformat '%{version}' {{ openshift.common.service_type }}
|
|
|
+ register: _new_version
|
|
|
+
|
|
|
+- name: Ensure AOS 3.0.2 or Origin 1.0.6
|
|
|
+ hosts: oo_first_master
|
|
|
+ tasks:
|
|
|
+ fail: This playbook requires Origin 1.0.6 or Atomic OpenShift 3.0.2 or later
|
|
|
+ when: _new_version.stdout | version_compare('1.0.6','<') or ( _new_version.stdout | version_compare('3.0','>=' and _new_version.stdout | version_compare('3.0.2','<') )
|
|
|
+
|
|
|
+- name: Verify upgrade can proceed
|
|
|
+ hosts: oo_first_master
|
|
|
+ tasks:
|
|
|
+ # Checking the global deployment type rather than host facts, this is about
|
|
|
+ # what the user is requesting.
|
|
|
+ - fail: msg="Deployment type 'enterprise' must be updated to 'openshift-enterprise' for upgrade to proceed"
|
|
|
+ when: deployment_type == "enterprise" and (_new_version.stdout | version_compare('1.0.7', '>=') or _new_version.stdout | version_compare('3.1', '>='))
|
|
|
|
|
|
- name: Upgrade masters
|
|
|
hosts: masters
|
|
|
vars:
|
|
|
openshift_version: "{{ openshift_pkg_version | default('') }}"
|
|
|
tasks:
|
|
|
+ - name: Upgrade to latest available kernel
|
|
|
+ yum: pkg=kernel state=latest
|
|
|
+ - name: display just the deployment_type variable for the current host
|
|
|
+ debug:
|
|
|
+ var: hostvars[inventory_hostname]
|
|
|
- name: Upgrade master packages
|
|
|
- yum: pkg={{ openshift.common.service_type }}-master{{ openshift_version }} state=latest
|
|
|
+ command: yum update -y {{ openshift.common.service_type }}-master{{ openshift_version }}
|
|
|
+ - name: Upgrade master configuration.
|
|
|
+ openshift_upgrade_config: from_version=3.0 to_version=3.1 role=master
|
|
|
- name: Restart master services
|
|
|
service: name="{{ openshift.common.service_type}}-master" state=restarted
|
|
|
|
|
@@ -32,26 +121,14 @@
|
|
|
hosts: nodes
|
|
|
vars:
|
|
|
openshift_version: "{{ openshift_pkg_version | default('') }}"
|
|
|
+ roles:
|
|
|
+ - openshift_facts
|
|
|
tasks:
|
|
|
- name: Upgrade node packages
|
|
|
- yum: pkg={{ openshift.common.service_type }}-node{{ openshift_version }} state=latest
|
|
|
+ command: yum update -y {{ openshift.common.service_type }}-node{{ openshift_version }}
|
|
|
- name: Restart node services
|
|
|
service: name="{{ openshift.common.service_type }}-node" state=restarted
|
|
|
|
|
|
-- name: Determine new master version
|
|
|
- hosts: oo_first_master
|
|
|
- tasks:
|
|
|
- - name: Determine new version
|
|
|
- command: >
|
|
|
- rpm -q --queryformat '%{version}' {{ openshift.common.service_type }}-master
|
|
|
- register: _new_version
|
|
|
-
|
|
|
-- name: Ensure AOS 3.0.2 or Origin 1.0.6
|
|
|
- hosts: oo_first_master
|
|
|
- tasks:
|
|
|
- fail: This playbook requires Origin 1.0.6 or Atomic OpenShift 3.0.2 or later
|
|
|
- when: _new_version.stdout | version_compare('1.0.6','<') or ( _new_version.stdout | version_compare('3.0','>=' and _new_version.stdout | version_compare('3.0.2','<') )
|
|
|
-
|
|
|
- name: Update cluster policy
|
|
|
hosts: oo_first_master
|
|
|
tasks:
|