summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xplaybooks/adhoc/upgrades/library/openshift_upgrade_config.py10
-rw-r--r--playbooks/adhoc/upgrades/upgrade.yml54
-rw-r--r--roles/openshift_master/tasks/main.yml5
3 files changed, 59 insertions, 10 deletions
diff --git a/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py b/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py
index 33eb40d7d..f9ee5b254 100755
--- a/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py
+++ b/playbooks/adhoc/upgrades/library/openshift_upgrade_config.py
@@ -74,13 +74,9 @@ def upgrade_master_3_0_to_3_1(ansible_module, config_base, backup):
config['apiLevels'] = result['new_list']
changes.append(result['changes'])
- if 'kubernetesMasterConfig' in config:
- result = modify_api_levels(config['kubernetesMasterConfig'].get('apiLevels'),
- unsupported_levels, supported_levels, 'master-config.yaml:',
- 'from apiLevels')
- if result['changed']:
- config['kubernetesMasterConfig']['apiLevels'] = result['new_list']
- changes.append(result['changes'])
+ if 'kubernetesMasterConfig' in config and 'apiLevels' in config['kubernetesMasterConfig']:
+ config['kubernetesMasterConfig'].remove('apiLevels')
+ changes.append('master-config.yaml: removed kubernetesMasterConfig.apiLevels')
# Add proxyClientInfo to master-config
if 'proxyClientInfo' not in config['kubernetesMasterConfig']:
diff --git a/playbooks/adhoc/upgrades/upgrade.yml b/playbooks/adhoc/upgrades/upgrade.yml
index 890a51241..c0fdab027 100644
--- a/playbooks/adhoc/upgrades/upgrade.yml
+++ b/playbooks/adhoc/upgrades/upgrade.yml
@@ -6,12 +6,17 @@
- name: Verify upgrade can proceed
hosts: masters[0]
+ vars:
+ openshift_master_ha: "{{ groups['masters'] | length > 1 }}"
gather_facts: no
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"
+ # Pacemaker is currently the only supported upgrade path for multiple masters
+ - fail: msg="openshift_master_cluster_method must be set to 'pacemaker'"
+ when: openshift_master_ha | bool and ((openshift_master_cluster_method is not defined) or (openshift_master_cluster_method is defined and openshift_master_cluster_method != "pacemaker"))
- name: Run pre-upgrade checks on first master
hosts: masters[0]
@@ -192,8 +197,6 @@
command: >
tar -czvf {{ master_generated_certs_dir }}/{{ item.master_cert_subdir }}.tgz
-C {{ master_generated_certs_dir }}/{{ item.master_cert_subdir }} .
- args:
- creates: "{{ master_generated_certs_dir }}/{{ item.master_cert_subdir }}.tgz"
with_items: masters_needing_certs
- name: Retrieve the master cert tarball from the master
@@ -205,11 +208,11 @@
validate_checksum: yes
with_items: masters_needing_certs
-
- name: Sync certs and restart masters post configuration change
hosts: masters
vars:
sync_tmpdir: "{{ hostvars.localhost.g_master_mktemp.stdout }}"
+ openshift_master_ha: "{{ groups['masters'] | length > 1 }}"
tasks:
- name: Unarchive the tarball on the master
unarchive:
@@ -219,7 +222,41 @@
- name: Restart master services
service: name="{{ openshift.common.service_type}}-master" state=restarted
+ when: not openshift_master_ha | bool
+- name: Destroy cluster
+ hosts: masters[0]
+ vars:
+ openshift_master_ha: "{{ groups['masters'] | length > 1 }}"
+ openshift_deployment_type: "{{ deployment_type }}"
+ pre_tasks:
+ - name: Check for configured cluster
+ stat:
+ path: /etc/corosync/corosync.conf
+ register: corosync_conf
+ when: openshift_master_ha | bool
+ - name: Destroy cluster
+ command: pcs cluster destroy --all
+ when: openshift_master_ha | bool and corosync_conf.stat.exists == true
+
+- name: Start pcsd on masters
+ hosts: masters
+ vars:
+ openshift_master_ha: "{{ groups['masters'] | length > 1 }}"
+ tasks:
+ - name: Start pcsd
+ service: name=pcsd state=started
+ when: openshift_master_ha | bool
+
+- name: Re-create cluster
+ hosts: masters[0]
+ vars:
+ openshift_master_ha: "{{ groups['masters'] | length > 1 }}"
+ openshift_deployment_type: "{{ deployment_type }}"
+ omc_cluster_hosts: "{{ groups.masters | join(' ') }}"
+ roles:
+ - role: openshift_master_cluster
+ when: openshift_master_ha | bool
- name: Delete temporary directory on localhost
hosts: localhost
@@ -265,10 +302,21 @@
- name: Restart masters post reconcile
hosts: masters
+ vars:
+ openshift_master_ha: "{{ groups['masters'] | length > 1 }}"
tasks:
- name: Restart master services
service: name="{{ openshift.common.service_type}}-master" state=restarted
+ when: not openshift_master_ha | bool
+- name: Restart cluster post reconcile
+ hosts: masters[0]
+ vars:
+ openshift_master_ha: "{{ groups['masters'] | length > 1 }}"
+ tasks:
+ - name: Restart master cluster
+ command: pcs resource restart master
+ when: openshift_master_ha | bool
- name: Upgrade default router and registry
hosts: masters[0]
diff --git a/roles/openshift_master/tasks/main.yml b/roles/openshift_master/tasks/main.yml
index be77fce4a..35570923c 100644
--- a/roles/openshift_master/tasks/main.yml
+++ b/roles/openshift_master/tasks/main.yml
@@ -140,22 +140,27 @@
src: atomic-openshift-master-api.service.j2
dest: /usr/lib/systemd/system/{{ openshift.common.service_type }}-master-api.service
force: no
+ when: openshift_master_ha | bool and openshift_master_cluster_method == "native"
- name: Create the controllers service file
template:
src: atomic-openshift-master-controllers.service.j2
dest: /usr/lib/systemd/system/{{ openshift.common.service_type }}-master-controllers.service
force: no
+ when: openshift_master_ha | bool and openshift_master_cluster_method == "native"
- name: Create the api env file
template:
src: atomic-openshift-master-api.j2
dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-api
force: no
+ when: openshift_master_ha | bool and openshift_master_cluster_method == "native"
- name: Create the controllers env file
template:
src: atomic-openshift-master-controllers.j2
dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers
force: no
+ when: openshift_master_ha | bool and openshift_master_cluster_method == "native"
- command: systemctl daemon-reload
+ when: openshift_master_ha | bool and openshift_master_cluster_method == "native"
# end workaround for missing systemd unit files
- name: Create session secrets file