summaryrefslogtreecommitdiffstats
path: root/playbooks/common/openshift-cluster/upgrades/v3_1_minor/pre.yml
blob: 864622a0970d58e1e7c3849e0a2b563f748cfdb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
---
###############################################################################
# Evaluate host groups and gather facts
###############################################################################
- name: Load openshift_facts
  hosts: oo_masters_to_config:oo_nodes_to_config:oo_etcd_to_config:oo_lb_to_config
  roles:
  - openshift_facts

###############################################################################
# Pre-upgrade checks
###############################################################################
- name: Verify upgrade can proceed
  hosts: oo_first_master
  vars:
    openshift_master_ha: "{{ groups.oo_masters_to_config | length > 1 }}"
    target_version: "{{ '1.1.1' if deployment_type == 'origin' else '3.1.1' }}"
  gather_facts: no
  tasks:
  - fail:
      msg: >
        This upgrade is only supported for origin, openshift-enterprise, and online
        deployment types
    when: deployment_type not in ['origin','openshift-enterprise', 'online']

  - fail:
      msg: >
        openshift_pkg_version is {{ openshift_pkg_version }} which is not a
        valid version for a {{ target_version }} upgrade
    when: openshift_pkg_version is defined and openshift_pkg_version.split('-',1).1 | version_compare(target_version ,'<')

- name: Verify upgrade can proceed
  hosts: oo_masters_to_config:oo_nodes_to_config
  vars:
    target_version: "{{ '1.1.1' if deployment_type == 'origin' else '3.1.1' }}"
  tasks:
  - name: Clean package cache
    command: "{{ ansible_pkg_mgr }} clean all"

  - set_fact:
      g_new_service_name: "{{ 'origin' if deployment_type =='origin' else 'atomic-openshift' }}"

  - name: Determine available versions
    script: ../files/rpm_versions.sh {{ g_new_service_name }}
    register: g_versions_result

  - set_fact:
      g_aos_versions: "{{ g_versions_result.stdout | from_yaml }}"

  - set_fact:
      g_new_version: "{{ g_aos_versions.curr_version.split('-', 1).0 if g_aos_versions.avail_version is none else g_aos_versions.avail_version.split('-', 1).0 }}"

  - fail:
      msg: This playbook requires Origin 1.1 or later
    when: deployment_type == 'origin' and g_aos_versions.curr_version | version_compare('1.1','<')

  - fail:
      msg: This playbook requires Atomic Enterprise Platform/OpenShift Enterprise 3.1 or later
    when: deployment_type == 'atomic-openshift' and g_aos_versions.curr_version | version_compare('3.1','<')

  - fail:
      msg: Upgrade packages not found
    when: (g_aos_versions.avail_version | default(g_aos_versions.curr_version, true) | version_compare(target_version, '<'))

  - set_fact:
      pre_upgrade_complete: True


##############################################################################
# Gate on pre-upgrade checks
##############################################################################
- name: Gate on pre-upgrade checks
  hosts: localhost
  connection: local
  become: no
  vars:
    pre_upgrade_hosts: "{{ groups.oo_masters_to_config | union(groups.oo_nodes_to_config) }}"
  tasks:
  - set_fact:
      pre_upgrade_completed: "{{ hostvars
                                 | oo_select_keys(pre_upgrade_hosts)
                                 | oo_collect('inventory_hostname', {'pre_upgrade_complete': true}) }}"
  - set_fact:
      pre_upgrade_failed: "{{ pre_upgrade_hosts | difference(pre_upgrade_completed) }}"
  - fail:
      msg: "Upgrade cannot continue. The following hosts did not complete pre-upgrade checks: {{ pre_upgrade_failed | join(',') }}"
    when: pre_upgrade_failed | length > 0