diff options
Diffstat (limited to 'playbooks/common')
16 files changed, 172 insertions, 26 deletions
diff --git a/playbooks/common/openshift-cluster/upgrades/initialize_nodes_to_upgrade.yml b/playbooks/common/openshift-cluster/upgrades/initialize_nodes_to_upgrade.yml index fc1cbf32a..07be0b0d4 100644 --- a/playbooks/common/openshift-cluster/upgrades/initialize_nodes_to_upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/initialize_nodes_to_upgrade.yml @@ -31,7 +31,7 @@        with_items: " {{ groups['oo_nodes_to_config'] }}"        when:        - hostvars[item].openshift is defined -      - hostvars[item].openshift.common.hostname in nodes_to_upgrade.results.results[0]['items'] | map(attribute='metadata.name') | list +      - hostvars[item].openshift.common.hostname | lower in nodes_to_upgrade.results.results[0]['items'] | map(attribute='metadata.name') | list        changed_when: false    # Build up the oo_nodes_to_upgrade group, use the list filtered by label if diff --git a/playbooks/common/openshift-cluster/upgrades/post_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/post_control_plane.yml index f790fd98d..de612da21 100644 --- a/playbooks/common/openshift-cluster/upgrades/post_control_plane.yml +++ b/playbooks/common/openshift-cluster/upgrades/post_control_plane.yml @@ -6,7 +6,9 @@    hosts: oo_first_master    roles:    - role: openshift_web_console -    when: openshift_web_console_install | default(true) | bool +    when: +    - openshift_web_console_install | default(true) | bool +    - openshift_upgrade_target is version_compare('3.9','>=')  - name: Upgrade default router and default registry    hosts: oo_first_master diff --git a/playbooks/common/openshift-cluster/upgrades/pre/config.yml b/playbooks/common/openshift-cluster/upgrades/pre/config.yml index da63450b8..2b27f8dd0 100644 --- a/playbooks/common/openshift-cluster/upgrades/pre/config.yml +++ b/playbooks/common/openshift-cluster/upgrades/pre/config.yml @@ -49,7 +49,7 @@      # to a more specific version, respecting openshift_image_tag and openshift_pkg_version if      # defined, and overriding the normal behavior of protecting the installed version      openshift_release: "{{ openshift_upgrade_target }}" -    openshift_protect_installed_version: False +    # openshift_protect_installed_version is passed n via upgrade_control_plane.yml      # l_openshift_version_set_hosts is passed via upgrade_control_plane.yml      # l_openshift_version_check_hosts is passed via upgrade_control_plane.yml diff --git a/playbooks/common/openshift-cluster/upgrades/pre/verify_cluster.yml b/playbooks/common/openshift-cluster/upgrades/pre/verify_cluster.yml index 693ab2d96..5ee8a9d78 100644 --- a/playbooks/common/openshift-cluster/upgrades/pre/verify_cluster.yml +++ b/playbooks/common/openshift-cluster/upgrades/pre/verify_cluster.yml @@ -92,3 +92,25 @@          state: started          enabled: yes        with_items: "{{ master_services }}" + +# Until openshift-ansible is determining which host is the CA host we +# must (unfortunately) ensure that the first host in the etcd group is +# the etcd CA host. +# https://bugzilla.redhat.com/show_bug.cgi?id=1469358 +- name: Verify we can proceed on first etcd +  hosts: oo_first_etcd +  gather_facts: no +  tasks: +  - name: Ensure CA exists on first etcd +    stat: +      path: /etc/etcd/generated_certs +    register: __etcd_ca_stat + +  - fail: +      msg: > +        In order to correct an etcd certificate signing problem +        upgrading may require re-generating etcd certificates. Please +        ensure that the /etc/etcd/generated_certs directory exists on +        the first host defined in your [etcd] group. +    when: +    - not __etcd_ca_stat.stat.exists | bool diff --git a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml index e89f06f17..a10fd4bee 100644 --- a/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml +++ b/playbooks/common/openshift-cluster/upgrades/upgrade_control_plane.yml @@ -2,6 +2,30 @@  ###############################################################################  # Upgrade Masters  ############################################################################### + +# Prior to 3.6, openshift-ansible created etcd serving certificates +# without a SubjectAlternativeName entry for the system hostname. The +# SAN list in Go 1.8 is now (correctly) authoritative and since +# openshift-ansible configures masters to talk to etcd hostnames +# rather than IP addresses, we must correct etcd certificates. +# +# This play examines the etcd serving certificate SANs on each etcd +# host and records whether or not the system hostname is missing. +- name: Examine etcd serving certificate SAN +  hosts: oo_etcd_to_config +  tasks: +  - slurp: +      src: /etc/etcd/server.crt +    register: etcd_serving_cert +  - set_fact: +      __etcd_cert_lacks_hostname: "{{ (openshift.common.hostname not in (etcd_serving_cert.content | b64decode | lib_utils_oo_parse_certificate_san)) | bool }}" + +# Redeploy etcd certificates when hostnames were missing from etcd +# serving certificate SANs. +- import_playbook: ../../../openshift-etcd/redeploy-certificates.yml +  when: +  - true in hostvars | lib_utils_oo_select_keys(groups['oo_etcd_to_config']) | lib_utils_oo_collect('__etcd_cert_lacks_hostname') | default([false]) +  - name: Backup and upgrade etcd    import_playbook: ../../../openshift-etcd/private/upgrade_main.yml @@ -310,13 +334,8 @@    - import_role:        name: openshift_node        tasks_from: upgrade.yml -  - name: Set node schedulability -    oc_adm_manage_node: -      node: "{{ openshift.node.nodename | lower }}" -      schedulable: True -    delegate_to: "{{ groups.oo_first_master.0 }}" -    retries: 10 -    delay: 5 -    register: node_schedulable -    until: node_schedulable is succeeded -    when: node_unschedulable is changed +  - import_role: +      name: openshift_manage_node +      tasks_from: config.yml +    vars: +      openshift_master_host: "{{ groups.oo_first_master.0 }}" diff --git a/playbooks/common/openshift-cluster/upgrades/upgrade_nodes.yml b/playbooks/common/openshift-cluster/upgrades/upgrade_nodes.yml index 850442b3b..915fae9fd 100644 --- a/playbooks/common/openshift-cluster/upgrades/upgrade_nodes.yml +++ b/playbooks/common/openshift-cluster/upgrades/upgrade_nodes.yml @@ -50,16 +50,11 @@    - import_role:        name: openshift_node        tasks_from: upgrade.yml -  - name: Set node schedulability -    oc_adm_manage_node: -      node: "{{ openshift.node.nodename | lower }}" -      schedulable: True -    delegate_to: "{{ groups.oo_first_master.0 }}" -    retries: 10 -    delay: 5 -    register: node_schedulable -    until: node_schedulable is succeeded -    when: node_unschedulable is changed +  - import_role: +      name: openshift_manage_node +      tasks_from: config.yml +    vars: +      openshift_master_host: "{{ groups.oo_first_master.0 }}"  - name: Re-enable excluders    hosts: oo_nodes_to_upgrade:!oo_masters_to_config diff --git a/playbooks/common/openshift-cluster/upgrades/v3_6/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_6/upgrade.yml index d520c6aee..a2d21b69f 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_6/upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_6/upgrade.yml @@ -23,6 +23,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config:oo_nodes_to_upgrade"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_nodes_to_upgrade:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_nodes_to_config:oo_masters_to_config" +    openshift_protect_installed_version: False  - import_playbook: validator.yml diff --git a/playbooks/common/openshift-cluster/upgrades/v3_6/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/v3_6/upgrade_control_plane.yml index d88880140..9aa5a3b64 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_6/upgrade_control_plane.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_6/upgrade_control_plane.yml @@ -35,6 +35,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_masters_to_config" +    openshift_protect_installed_version: False  - import_playbook: validator.yml diff --git a/playbooks/common/openshift-cluster/upgrades/v3_7/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_7/upgrade.yml index 4daa9e490..cc2ec2709 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_7/upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_7/upgrade.yml @@ -23,6 +23,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config:oo_nodes_to_upgrade"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_nodes_to_upgrade:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_nodes_to_config:oo_masters_to_config" +    openshift_protect_installed_version: False  - import_playbook: validator.yml diff --git a/playbooks/common/openshift-cluster/upgrades/v3_7/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/v3_7/upgrade_control_plane.yml index ce069e2d0..b1ecc75d3 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_7/upgrade_control_plane.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_7/upgrade_control_plane.yml @@ -35,6 +35,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_masters_to_config" +    openshift_protect_installed_version: False  - import_playbook: validator.yml diff --git a/playbooks/common/openshift-cluster/upgrades/v3_8/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_8/upgrade.yml index a9bf354cc..a73b7d63a 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_8/upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_8/upgrade.yml @@ -23,6 +23,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config:oo_nodes_to_upgrade"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_nodes_to_upgrade:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_nodes_to_config:oo_masters_to_config" +    openshift_protect_installed_version: False  - import_playbook: validator.yml diff --git a/playbooks/common/openshift-cluster/upgrades/v3_8/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/v3_8/upgrade_control_plane.yml index 3f26a6297..723b2e533 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_8/upgrade_control_plane.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_8/upgrade_control_plane.yml @@ -36,6 +36,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_masters_to_config" +    openshift_protect_installed_version: False  - import_playbook: validator.yml diff --git a/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade.yml b/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade.yml index 20e0c165e..bf6e8605e 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade.yml @@ -20,6 +20,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config:oo_nodes_to_upgrade"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_nodes_to_upgrade:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_nodes_to_config:oo_masters_to_config" +    openshift_protect_installed_version: False  - import_playbook: validator.yml diff --git a/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml b/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml index 0f48725f6..fe1fdefff 100644 --- a/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml +++ b/playbooks/common/openshift-cluster/upgrades/v3_9/upgrade_control_plane.yml @@ -25,10 +25,18 @@        openshift_upgrade_target: '3.8'        openshift_upgrade_min: '3.7'        openshift_release: '3.8' -      _requested_pkg_version: "{{openshift_pkg_version if openshift_pkg_version is defined else omit }}" -      _requested_image_tag: "{{openshift_image_tag if openshift_image_tag is defined else omit }}" +      _requested_pkg_version: "{{ openshift_pkg_version if openshift_pkg_version is defined else omit }}" +      _requested_image_tag: "{{ openshift_image_tag if openshift_image_tag is defined else omit }}" +      l_double_upgrade_cp: True      when: hostvars[groups.oo_first_master.0].openshift_currently_installed_version | version_compare('3.8','<') +  - name: set l_force_image_tag_to_version = True +    set_fact: +      # Need to set this during 3.8 upgrade to ensure image_tag is set correctly +      # to match 3.8 version +      l_force_image_tag_to_version: True +    when: _requested_image_tag is defined +  - import_playbook: ../pre/config.yml    # These vars a meant to exclude oo_nodes from plays that would otherwise include    # them by default. @@ -41,6 +49,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_masters_to_config" +    openshift_protect_installed_version: False    when: hostvars[groups.oo_first_master.0].openshift_currently_installed_version | version_compare('3.8','<')  - name: Flag pre-upgrade checks complete for hosts without errors 3.8 @@ -68,7 +77,20 @@        openshift_upgrade_min: '3.8'        openshift_release: '3.9'        openshift_pkg_version: "{{ _requested_pkg_version | default ('-3.9*') }}" -      openshift_image_tag: "{{ _requested_image_tag | default('v3.9') }}" +  # Set the user's specified image_tag for 3.9 upgrade if it was provided. +  - set_fact: +      openshift_image_tag: "{{ _requested_image_tag }}" +      l_force_image_tag_to_version: False +    when: _requested_image_tag is defined +  # If the user didn't specify an image_tag, we need to force update image_tag +  # because it will have already been set during 3.8.  If we aren't running +  # a double upgrade, then we can preserve image_tag because it will still +  # be the user provided value. +  - set_fact: +      l_force_image_tag_to_version: True +    when: +    - l_double_upgrade_cp is defined and l_double_upgrade_cp +    - _requested_image_tag is not defined  - import_playbook: ../pre/config.yml    # These vars a meant to exclude oo_nodes from plays that would otherwise include @@ -82,6 +104,7 @@      l_upgrade_verify_targets_hosts: "oo_masters_to_config"      l_upgrade_docker_target_hosts: "oo_masters_to_config:oo_etcd_to_config"      l_upgrade_excluder_hosts: "oo_masters_to_config" +    openshift_protect_installed_version: False  - name: Flag pre-upgrade checks complete for hosts without errors    hosts: oo_masters_to_config:oo_etcd_to_config @@ -110,3 +133,9 @@        state: started  - import_playbook: ../post_control_plane.yml + +- hosts: oo_masters +  tasks: +  - import_role: +      name: openshift_web_console +      tasks_from: remove_old_asset_config diff --git a/playbooks/common/private/components.yml b/playbooks/common/private/components.yml new file mode 100644 index 000000000..089645d07 --- /dev/null +++ b/playbooks/common/private/components.yml @@ -0,0 +1,38 @@ +--- +# These are the core component plays that configure the layers above the control +# plane. A component is generally considered any part of OpenShift that runs on +# top of the cluster and may be considered optional. Over time, much of OpenShift +# above the Kubernetes apiserver and masters may be considered components. +# +# Preconditions: +# +# 1. The control plane is configured and reachable from nodes inside the cluster +# 2. An admin kubeconfig file in /etc/origin/master/admin.kubeconfig that can +#    perform root level actions against the cluster +# 3. On cloud providers, persistent volume provisioners are configured +# 4. A subset of nodes is available to allow components to schedule - this must +#    include the masters and usually includes infra nodes. +# 5. The init/main.yml playbook has been invoked + +- import_playbook: ../../openshift-glusterfs/private/config.yml +  when: groups.oo_glusterfs_to_config | default([]) | count > 0 + +- import_playbook: ../../openshift-hosted/private/config.yml + +- import_playbook: ../../openshift-web-console/private/config.yml +  when: openshift_web_console_install | default(true) | bool + +- import_playbook: ../../openshift-metrics/private/config.yml +  when: openshift_metrics_install_metrics | default(false) | bool + +- import_playbook: ../../openshift-logging/private/config.yml +  when: openshift_logging_install_logging | default(false) | bool + +- import_playbook: ../../openshift-prometheus/private/config.yml +  when: openshift_hosted_prometheus_deploy | default(false) | bool + +- import_playbook: ../../openshift-service-catalog/private/config.yml +  when: openshift_enable_service_catalog | default(true) | bool + +- import_playbook: ../../openshift-management/private/config.yml +  when: openshift_management_install_management | default(false) | bool diff --git a/playbooks/common/private/control_plane.yml b/playbooks/common/private/control_plane.yml new file mode 100644 index 000000000..0a5f1142b --- /dev/null +++ b/playbooks/common/private/control_plane.yml @@ -0,0 +1,34 @@ +--- +# These are the control plane plays that configure a control plane on top of hosts +# identified as masters. Over time, some of the pieces of the current control plane +# may be moved to the components list. +# +# It is not required for any nodes to be configured, or passed to be configured, +# when this playbook is invoked. +# +# Preconditions: +# +# 1. A set of machines have been identified to act as masters +# 2. On cloud providers, a load balancer has been configured to point to the masters +#    and that load balancer has a DNS name +# 3. The init/main.yml playbook has been invoked +# +# Postconditions: +# +# 1. The control plane is reachable from the outside of the cluster +# 2. The master has an /etc/origin/master/admin.kubeconfig file that gives cluster-admin +#    access. + +- import_playbook: ../../openshift-checks/private/install.yml + +- import_playbook: ../../openshift-etcd/private/config.yml + +- import_playbook: ../../openshift-nfs/private/config.yml +  when: groups.oo_nfs_to_config | default([]) | count > 0 + +- import_playbook: ../../openshift-loadbalancer/private/config.yml +  when: groups.oo_lb_to_config | default([]) | count > 0 + +- import_playbook: ../../openshift-master/private/config.yml + +- import_playbook: ../../openshift-master/private/additional_config.yml  | 
