diff options
5 files changed, 68 insertions, 80 deletions
diff --git a/playbooks/common/openshift-cluster/evaluate_groups.yml b/playbooks/common/openshift-cluster/evaluate_groups.yml index 4331bc88d..17a177644 100644 --- a/playbooks/common/openshift-cluster/evaluate_groups.yml +++ b/playbooks/common/openshift-cluster/evaluate_groups.yml @@ -5,31 +5,38 @@    become: no    gather_facts: no    tasks: -  - fail: +  - name: Evaluate groups - g_etcd_hosts required +    fail:        msg: This playbook requires g_etcd_hosts to be set      when: g_etcd_hosts is not defined -  - fail: +  - name: Evaluate groups - g_master_hosts or g_new_master_hosts required +    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 or g_new_master_hosts is not defined -  - fail: +  - name: Evaluate groups - g_node_hosts or g_new_node_hosts required +    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 or g_new_node_hosts is not defined -  - fail: +  - name: Evaluate groups - g_lb_hosts required +    fail:        msg: This playbook requires g_lb_hosts to be set      when: g_lb_hosts is not defined -  - fail: +  - name: Evaluate groups - g_nfs_hosts required +    fail:        msg: This playbook requires g_nfs_hosts to be set      when: g_nfs_hosts is not defined -  - fail: +  - name: Evaluate groups - g_nfs_hosts is single host +    fail:        msg: The nfs group must be limited to one host      when: (groups[g_nfs_hosts] | default([])) | length > 1 -  - fail: +  - name: Evaluate groups - g_glusterfs_hosts required +    fail:        msg: This playbook requires g_glusterfs_hosts to be set      when: g_glusterfs_hosts is not defined @@ -51,13 +58,13 @@      with_items: "{{ g_master_hosts | union(g_new_master_hosts) | default([]) }}"      changed_when: no -  - name: Evaluate oo_etcd_to_config +  - name: Evaluate oo_first_master      add_host: -      name: "{{ item }}" -      groups: oo_etcd_to_config +      name: "{{ g_master_hosts[0] }}" +      groups: oo_first_master        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_become: "{{ g_sudo | default(omit) }}" -    with_items: "{{ g_etcd_hosts | default([]) }}" +    when: g_master_hosts|length > 0      changed_when: no    - name: Evaluate oo_masters_to_config @@ -69,41 +76,59 @@      with_items: "{{ g_new_master_hosts | default(g_master_hosts | default([], true), true) }}"      changed_when: no -  - name: Evaluate oo_nodes_to_config +  - name: Evaluate oo_etcd_to_config      add_host:        name: "{{ item }}" -      groups: oo_nodes_to_config +      groups: oo_etcd_to_config        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_become: "{{ g_sudo | default(omit) }}" -    with_items: "{{ g_new_node_hosts | default(g_node_hosts | default([], true), true) }}" +    with_items: "{{ g_etcd_hosts | default([]) }}"      changed_when: no -  # Skip adding the master to oo_nodes_to_config when g_new_node_hosts is -  - name: Add master to oo_nodes_to_config +  - name: Evaluate oo_first_etcd      add_host: -      name: "{{ item }}" -      groups: oo_nodes_to_config +      name: "{{ g_etcd_hosts[0] }}" +      groups: oo_first_etcd        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_etcd_hosts|length > 0      changed_when: no -  - name: Evaluate oo_first_etcd +  # We use two groups one for hosts we're upgrading which doesn't include embedded etcd +  # The other for backing up which includes the embedded etcd host, there's no need to +  # upgrade embedded etcd that just happens when the master is updated. +  - name: Evaluate oo_etcd_hosts_to_upgrade      add_host: -      name: "{{ g_etcd_hosts[0] }}" -      groups: oo_first_etcd +      name: "{{ item }}" +      groups: oo_etcd_hosts_to_upgrade +    with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else [] }}" +    changed_when: False + +  - name: Evaluate oo_etcd_hosts_to_backup +    add_host: +      name: "{{ item }}" +      groups: oo_etcd_hosts_to_backup +    with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else groups.oo_first_master }}" +    changed_when: False + +  - name: Evaluate oo_nodes_to_config +    add_host: +      name: "{{ item }}" +      groups: oo_nodes_to_config        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}" -    when: g_etcd_hosts|length > 0 +      ansible_become: "{{ g_sudo | default(omit) }}" +    with_items: "{{ g_new_node_hosts | default(g_node_hosts | default([], true), true) }}"      changed_when: no -  - name: Evaluate oo_first_master +  # Skip adding the master to oo_nodes_to_config when g_new_node_hosts is +  - name: Add master to oo_nodes_to_config      add_host: -      name: "{{ g_master_hosts[0] }}" -      groups: oo_first_master +      name: "{{ item }}" +      groups: oo_nodes_to_config        ansible_ssh_user: "{{ g_ssh_user | default(omit) }}"        ansible_become: "{{ g_sudo | default(omit) }}" -    when: g_master_hosts|length > 0 +    with_items: "{{ g_master_hosts | default([]) }}" +    when: g_nodeonmaster | default(false) | bool and not g_new_node_hosts | default(false) | bool      changed_when: no    - name: Evaluate oo_lb_to_config diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml b/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml index fb51a0061..9d0333ca8 100644 --- a/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml +++ b/playbooks/common/openshift-cluster/upgrades/etcd/backup.yml @@ -1,6 +1,6 @@  ---  - name: Backup etcd -  hosts: etcd_hosts_to_backup +  hosts: oo_etcd_hosts_to_backup    vars:      embedded_etcd: "{{ groups.oo_etcd_to_config | default([]) | length == 0 }}"      etcdctl_command: "{{ 'etcdctl' if not openshift.common.is_containerized or embedded_etcd else 'docker exec etcd_container etcdctl' if not openshift.common.is_etcd_system_container else 'runc exec etcd etcdctl' }}" @@ -87,10 +87,10 @@    tasks:    - set_fact:        etcd_backup_completed: "{{ hostvars -                                 | oo_select_keys(groups.etcd_hosts_to_backup) +                                 | oo_select_keys(groups.oo_etcd_hosts_to_backup)                                   | oo_collect('inventory_hostname', {'etcd_backup_complete': true}) }}"    - set_fact: -      etcd_backup_failed: "{{ groups.etcd_hosts_to_backup | difference(etcd_backup_completed) }}" +      etcd_backup_failed: "{{ groups.oo_etcd_hosts_to_backup | difference(etcd_backup_completed) }}"    - fail:        msg: "Upgrade cannot continue. The following hosts did not complete etcd backup: {{ etcd_backup_failed | join(',') }}"      when: etcd_backup_failed | length > 0 diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/main.yml b/playbooks/common/openshift-cluster/upgrades/etcd/main.yml index fa86d29fb..73657d2f1 100644 --- a/playbooks/common/openshift-cluster/upgrades/etcd/main.yml +++ b/playbooks/common/openshift-cluster/upgrades/etcd/main.yml @@ -5,32 +5,6 @@  # mirrored packages on your own because only the GA and latest versions are  # available in the repos. So for Fedora we'll simply skip this, sorry. -- include: ../../evaluate_groups.yml -  tags: -  - always - -# We use two groups one for hosts we're upgrading which doesn't include embedded etcd -# The other for backing up which includes the embedded etcd host, there's no need to -# upgrade embedded etcd that just happens when the master is updated. -- name: Evaluate additional groups for etcd -  hosts: localhost -  connection: local -  become: no -  tasks: -  - name: Evaluate etcd_hosts_to_upgrade -    add_host: -      name: "{{ item }}" -      groups: etcd_hosts_to_upgrade -    with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else [] }}" -    changed_when: False - -  - name: Evaluate etcd_hosts_to_backup -    add_host: -      name: "{{ item }}" -      groups: etcd_hosts_to_backup -    with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else groups.oo_first_master }}" -    changed_when: False -  - name: Backup etcd before upgrading anything    include: backup.yml    vars: @@ -38,7 +12,7 @@    when: openshift_etcd_backup | default(true) | bool  - name: Drop etcdctl profiles -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    tasks:    - include: roles/etcd/tasks/etcdctl.yml diff --git a/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml index a9b5b94e6..45e301315 100644 --- a/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/etcd/upgrade.yml @@ -1,6 +1,6 @@  ---  - name: Determine etcd version -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    tasks:    - name: Record RPM based etcd version      command: rpm -qa --qf '%{version}' etcd\* @@ -43,7 +43,7 @@  # I really dislike this copy/pasta but I wasn't able to find a way to get it to loop  # through hosts, then loop through tasks only when appropriate  - name: Upgrade to 2.1 -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    serial: 1    vars:      upgrade_version: '2.1' @@ -52,7 +52,7 @@      when: etcd_rpm_version.stdout | default('99') | version_compare('2.1','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool  - name: Upgrade RPM hosts to 2.2 -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    serial: 1    vars:      upgrade_version: '2.2' @@ -61,7 +61,7 @@      when: etcd_rpm_version.stdout | default('99') | version_compare('2.2','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool  - name: Upgrade containerized hosts to 2.2.5 -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    serial: 1    vars:      upgrade_version: 2.2.5 @@ -70,7 +70,7 @@      when: etcd_container_version.stdout | default('99') | version_compare('2.2','<') and openshift.common.is_containerized | bool  - name: Upgrade RPM hosts to 2.3 -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    serial: 1    vars:      upgrade_version: '2.3' @@ -79,7 +79,7 @@      when: etcd_rpm_version.stdout | default('99') | version_compare('2.3','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool  - name: Upgrade containerized hosts to 2.3.7 -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    serial: 1    vars:      upgrade_version: 2.3.7 @@ -88,7 +88,7 @@      when: etcd_container_version.stdout | default('99') | version_compare('2.3','<') and openshift.common.is_containerized | bool  - name: Upgrade RPM hosts to 3.0 -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    serial: 1    vars:      upgrade_version: '3.0' @@ -97,7 +97,7 @@      when: etcd_rpm_version.stdout | default('99') | version_compare('3.0','<') and ansible_distribution == 'RedHat' and not openshift.common.is_containerized | bool  - name: Upgrade containerized hosts to etcd3 image -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    serial: 1    vars:      upgrade_version: 3.0.15 @@ -106,7 +106,7 @@      when: etcd_container_version.stdout | default('99') | version_compare('3.0','<') and openshift.common.is_containerized | bool  - name: Upgrade fedora to latest -  hosts: etcd_hosts_to_upgrade +  hosts: oo_etcd_hosts_to_upgrade    serial: 1    tasks:    - include: fedora_tasks.yml diff --git a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml index c6e799261..0ad934d2d 100644 --- a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml +++ b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml @@ -2,17 +2,6 @@  ###############################################################################  # Upgrade Masters  ############################################################################### -- name: Evaluate additional groups for upgrade -  hosts: localhost -  connection: local -  become: no -  tasks: -  - name: Evaluate etcd_hosts_to_backup -    add_host: -      name: "{{ item }}" -      groups: etcd_hosts_to_backup -    with_items: "{{ groups.oo_etcd_to_config if groups.oo_etcd_to_config is defined and groups.oo_etcd_to_config | length > 0 else groups.oo_first_master }}" -    changed_when: False  # If facts cache were for some reason deleted, this fact may not be set, and if not set  # it will always default to true. This causes problems for the etcd data dir fact detection  | 
