diff options
Diffstat (limited to 'playbooks')
3 files changed, 177 insertions, 12 deletions
diff --git a/playbooks/common/openshift-cluster/evaluate_groups.yml b/playbooks/common/openshift-cluster/evaluate_groups.yml index 65b45886a..45a4875a3 100644 --- a/playbooks/common/openshift-cluster/evaluate_groups.yml +++ b/playbooks/common/openshift-cluster/evaluate_groups.yml @@ -7,27 +7,27 @@    tasks:    - fail:        msg: This playbook requires g_etcd_hosts to be set -    when: g_etcd_hosts is not defined +    when: "{{ g_etcd_hosts is not defined }}"    - fail:        msg: This playbook requires g_master_hosts or g_new_master_hosts to be set -    when: g_master_hosts is not defined and g_new_master_hosts is not defined +    when: "{{ g_master_hosts is not defined and g_new_master_hosts is not defined }}"    - fail:        msg: This playbook requires g_node_hosts or g_new_node_hosts to be set -    when: g_node_hosts is not defined and g_new_node_hosts is not defined +    when: "{{ g_node_hosts is not defined and g_new_node_hosts is not defined }}"    - fail:        msg: This playbook requires g_lb_hosts to be set -    when: g_lb_hosts is not defined +    when: "{{ g_lb_hosts is not defined }}"    - fail:        msg: This playbook requires g_nfs_hosts to be set -    when: g_nfs_hosts is not defined +    when: "{{ g_nfs_hosts is not defined }}"    - fail:        msg: The nfs group must be limited to one host -    when: (groups[g_nfs_hosts] | default([])) | length > 1 +    when: "{{ (groups[g_nfs_hosts] | default([])) | length > 1 }}"    - name: Evaluate oo_all_hosts      add_host: @@ -82,7 +82,7 @@        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_become: "{{ g_sudo | default(omit) }}"      with_items: "{{ g_master_hosts | default([]) }}" -    when: g_nodeonmaster | default(false) | bool and not g_new_node_hosts | default(false) | bool +    when: "{{ g_nodeonmaster | default(false) | bool and not g_new_node_hosts | default(false) | bool }}"      changed_when: no    - name: Evaluate oo_first_etcd @@ -90,7 +90,7 @@        name: "{{ g_etcd_hosts[0] }}"        groups: oo_first_etcd        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" -    when: g_etcd_hosts|length > 0 +    when: "{{ g_etcd_hosts|length > 0 }}"      changed_when: no    - name: Evaluate oo_first_master @@ -99,7 +99,7 @@        groups: oo_first_master        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_become: "{{ g_sudo | default(omit) }}" -    when: g_master_hosts|length > 0 +    when: "{{ g_master_hosts|length > 0 }}"      changed_when: no    - name: Evaluate oo_lb_to_config diff --git a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml index 9035b4d1d..f74ea9820 100644 --- a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml +++ b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml @@ -33,9 +33,6 @@  - name: Upgrade master packages    hosts: oo_masters_to_config -  handlers: -  - include: ../../../../roles/openshift_master/handlers/main.yml -    static: yes    roles:    - openshift_facts    tasks: @@ -64,6 +61,8 @@    - openshift_facts    - openshift_master_facts    tasks: +  - include: upgrade_scheduler.yml +    - include: "{{ master_config_hook }}"      when: master_config_hook is defined diff --git a/playbooks/common/openshift-cluster/upgrades/upgrade_scheduler.yml b/playbooks/common/openshift-cluster/upgrades/upgrade_scheduler.yml new file mode 100644 index 000000000..88f2ddc78 --- /dev/null +++ b/playbooks/common/openshift-cluster/upgrades/upgrade_scheduler.yml @@ -0,0 +1,166 @@ +--- +# Upgrade predicates +- vars: +    prev_predicates: "{{ lookup('openshift_master_facts_default_predicates', short_version=openshift_upgrade_min, deployment_type=openshift_deployment_type) }}" +    prev_predicates_no_region: "{{ lookup('openshift_master_facts_default_predicates', short_version=openshift_upgrade_min, deployment_type=openshift_deployment_type, regions_enabled=False) }}" +    default_predicates_no_region: "{{ lookup('openshift_master_facts_default_predicates', regions_enabled=False) }}" +    # older_predicates are the set of predicates that have previously been +    # hard-coded into openshift_facts +    older_predicates: +    - - name: MatchNodeSelector +      - name: PodFitsResources +      - name: PodFitsPorts +      - name: NoDiskConflict +      - name: NoVolumeZoneConflict +      - name: MaxEBSVolumeCount +      - name: MaxGCEPDVolumeCount +      - name: Region +        argument: +          serviceAffinity: +            labels: +            - region +    - - name: MatchNodeSelector +      - name: PodFitsResources +      - name: PodFitsPorts +      - name: NoDiskConflict +      - name: NoVolumeZoneConflict +      - name: Region +        argument: +          serviceAffinity: +            labels: +            - region +    - - name: MatchNodeSelector +      - name: PodFitsResources +      - name: PodFitsPorts +      - name: NoDiskConflict +      - name: Region +        argument: +          serviceAffinity: +            labels: +            - region +    # older_predicates_no_region are the set of predicates that have previously +    # been hard-coded into openshift_facts, with the Region predicate removed +    older_predicates_no_region: +    - - name: MatchNodeSelector +      - name: PodFitsResources +      - name: PodFitsPorts +      - name: NoDiskConflict +      - name: NoVolumeZoneConflict +      - name: MaxEBSVolumeCount +      - name: MaxGCEPDVolumeCount +    - - name: MatchNodeSelector +      - name: PodFitsResources +      - name: PodFitsPorts +      - name: NoDiskConflict +      - name: NoVolumeZoneConflict +    - - name: MatchNodeSelector +      - name: PodFitsResources +      - name: PodFitsPorts +      - name: NoDiskConflict +  block: + +  # Handle case where openshift_master_predicates is defined +  - block: +    - debug: +        msg: "WARNING: openshift_master_scheduler_predicates is set to defaults from an earlier release of OpenShift current defaults are: {{ openshift_master_scheduler_default_predicates }}" +      when: "{{ openshift_master_scheduler_predicates in older_predicates + older_predicates_no_region + [prev_predicates] + [prev_predicates_no_region] }}" + +    - debug: +        msg: "WARNING: openshift_master_scheduler_predicates does not match current defaults of: {{ openshift_master_scheduler_default_predicates }}" +      when: "{{ openshift_master_scheduler_predicates != openshift_master_scheduler_default_predicates }}" +    when: "{{ openshift_master_scheduler_predicates | default(none) is not none }}" + +  # Handle cases where openshift_master_predicates is not defined +  - block: +    - debug: +        msg: "WARNING: existing scheduler config does not match previous known defaults automated upgrade of scheduler config is disabled.\nexisting scheduler predicates: {{ openshift_master_scheduler_current_predicates }}\ncurrent scheduler default predicates are: {{ openshift_master_scheduler_default_predicates }}" +      when: "{{ openshift_master_scheduler_current_predicates != openshift_master_scheduler_default_predicates and +                openshift_master_scheduler_current_predicates not in older_predicates + [prev_predicates] }}" + +    - set_fact: +        openshift_upgrade_scheduler_predicates: "{{ openshift_master_scheduler_default_predicates }}" +      when: "{{ openshift_master_scheduler_current_predicates != openshift_master_scheduler_default_predicates and +                openshift_master_scheduler_current_predicates in older_predicates + [prev_predicates] }}" + +    - set_fact: +        openshift_upgrade_scheduler_predicates: "{{ default_predicates_no_region }}" +      when: "{{ openshift_master_scheduler_current_predicates != default_predicates_no_region and +                openshift_master_scheduler_current_predicates in older_predicates_no_region + [prev_predicates_no_region] }}" + +    when: "{{ openshift_master_scheduler_predicates | default(none) is none }}" + + +# Upgrade priorities +- vars: +    prev_priorities: "{{ lookup('openshift_master_facts_default_priorities', short_version=openshift_upgrade_min, deployment_type=openshift_deployment_type) }}" +    prev_priorities_no_zone: "{{ lookup('openshift_master_facts_default_priorities', short_version=openshift_upgrade_min, deployment_type=openshift_deployment_type, zones_enabled=False) }}" +    default_priorities_no_zone: "{{ lookup('openshift_master_facts_default_priorities', zones_enabled=False) }}" +    # older_priorities are the set of priorities that have previously been +    # hard-coded into openshift_facts +    older_priorities: +    - - name: LeastRequestedPriority +        weight: 1 +      - name: SelectorSpreadPriority +        weight: 1 +      - name: Zone +        weight: 2 +        argument: +          serviceAntiAffinity: +            label: zone +    # older_priorities_no_region are the set of priorities that have previously +    # been hard-coded into openshift_facts, with the Zone priority removed +    older_priorities_no_zone: +    - - name: LeastRequestedPriority +        weight: 1 +      - name: SelectorSpreadPriority +        weight: 1 +  block: + +  # Handle case where openshift_master_priorities is defined +  - block: +    - debug: +        msg: "WARNING: openshift_master_scheduler_priorities is set to defaults from an earlier release of OpenShift current defaults are: {{ openshift_master_scheduler_default_priorities }}" +      when: "{{ openshift_master_scheduler_priorities in older_priorities + older_priorities_no_zone + [prev_priorities] + [prev_priorities_no_zone] }}" + +    - debug: +        msg: "WARNING: openshift_master_scheduler_priorities does not match current defaults of: {{ openshift_master_scheduler_default_priorities }}" +      when: "{{ openshift_master_scheduler_priorities != openshift_master_scheduler_default_priorities }}" +    when: "{{ openshift_master_scheduler_priorities | default(none) is not none }}" + +  # Handle cases where openshift_master_priorities is not defined +  - block: +    - debug: +        msg: "WARNING: existing scheduler config does not match previous known defaults automated upgrade of scheduler config is disabled.\nexisting scheduler priorities: {{ openshift_master_scheduler_current_priorities }}\ncurrent scheduler default priorities are: {{ openshift_master_scheduler_default_priorities }}" +      when: "{{ openshift_master_scheduler_current_priorities != openshift_master_scheduler_default_priorities and +                openshift_master_scheduler_current_priorities not in older_priorities + [prev_priorities] }}" + +    - set_fact: +        openshift_upgrade_scheduler_priorities: "{{ openshift_master_scheduler_default_priorities }}" +      when: "{{ openshift_master_scheduler_current_priorities != openshift_master_scheduler_default_priorities and +                openshift_master_scheduler_current_priorities in older_priorities + [prev_priorities] }}" + +    - set_fact: +        openshift_upgrade_scheduler_priorities: "{{ default_priorities_no_zone }}" +      when: "{{ openshift_master_scheduler_current_priorities != default_priorities_no_zone and +                openshift_master_scheduler_current_priorities in older_priorities_no_zone + [prev_priorities_no_zone] }}" + +    when: "{{ openshift_master_scheduler_priorities | default(none) is none }}" + + +# Update scheduler +- vars: +    scheduler_config: +      kind: Policy +      apiVersion: v1 +      predicates: "{{ openshift_upgrade_scheduler_predicates +                      | default(openshift_master_scheduler_current_predicates) }}" +      priorities: "{{ openshift_upgrade_scheduler_priorities +                      | default(openshift_master_scheduler_current_priorities) }}" +  block: +  - name: Update scheduler config +    copy: +      content: "{{ scheduler_config | to_nice_json }}" +      dest: "{{ openshift_master_scheduler_conf }}" +      backup: true +  when: "{{ openshift_upgrade_scheduler_predicates is defined or +            openshift_upgrade_scheduler_priorities is defined }}"  | 
