diff options
| -rw-r--r-- | playbooks/adhoc/upgrades/upgrade.yml | 54 | ||||
| -rw-r--r-- | roles/openshift_master/tasks/main.yml | 5 | 
2 files changed, 56 insertions, 3 deletions
| diff --git a/playbooks/adhoc/upgrades/upgrade.yml b/playbooks/adhoc/upgrades/upgrade.yml index e63add4d1..e807d3fa8 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: Evaluate etcd_hosts    hosts: localhost @@ -182,8 +187,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 @@ -195,11 +198,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: @@ -209,7 +212,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 @@ -255,10 +292,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 | 
