diff options
18 files changed, 152 insertions, 200 deletions
| @@ -33,7 +33,7 @@ packages:  context: 'fedora/25/atomic'  env: -  OPENSHIFT_IMAGE_TAG: v3.6.0-alpha.1 +  OPENSHIFT_IMAGE_TAG: v3.6.0  tests:    - ./.papr.sh diff --git a/playbooks/common/openshift-cluster/initialize_facts.yml b/playbooks/common/openshift-cluster/initialize_facts.yml index 9cebecd68..4bf5d33b1 100644 --- a/playbooks/common/openshift-cluster/initialize_facts.yml +++ b/playbooks/common/openshift-cluster/initialize_facts.yml @@ -6,12 +6,140 @@  - name: Initialize host facts    hosts: oo_all_hosts -  roles: -  - openshift_facts    tasks: -  - openshift_facts: +  - name: load openshift_facts module +    include_role: +      name: openshift_facts + +  # TODO: Should this role be refactored into health_checks?? +  - name: Run openshift_sanitize_inventory to set variables +    include_role: +      name: openshift_sanitize_inventory + +  - name: Detecting Operating System from ostree_booted +    stat: +      path: /run/ostree-booted +    register: ostree_booted + +  # Locally setup containerized facts for now +  - name: initialize_facts set fact l_is_atomic +    set_fact: +      l_is_atomic: "{{ ostree_booted.stat.exists }}" + +  - name: initialize_facts set fact for containerized and l_is_*_system_container +    set_fact: +      l_is_containerized: "{{ (l_is_atomic | bool) or (containerized | default(false) | bool) }}" +      l_is_openvswitch_system_container: "{{ (openshift_use_openvswitch_system_container | default(openshift_use_system_containers | default(false)) | bool) }}" +      l_is_node_system_container: "{{ (openshift_use_node_system_container | default(openshift_use_system_containers | default(false)) | bool) }}" +      l_is_master_system_container: "{{ (openshift_use_master_system_container | default(openshift_use_system_containers | default(false)) | bool) }}" +      l_is_etcd_system_container: "{{ (openshift_use_etcd_system_container | default(openshift_use_system_containers | default(false)) | bool) }}" + +  - name: initialize_facts set facts for l_any_system_container +    set_fact: +      l_any_system_container: "{{ l_is_etcd_system_container or l_is_openvswitch_system_container or l_is_node_system_container or l_is_master_system_container }}" + +  - name: initialize_facts set fact for l_etcd_runtime +    set_fact: +      l_etcd_runtime: "{{ 'runc' if l_is_etcd_system_container else 'docker' if l_is_containerized else 'host' }}" + +  # TODO: Should this be moved into health checks?? +  # Seems as though any check that happens with a corresponding fail should move into health_checks +  - name: Validate python version - ans_dist is fedora and python is v3 +    fail: +      msg: | +        openshift-ansible requires Python 3 for {{ ansible_distribution }}; +        For information on enabling Python 3 with Ansible, see https://docs.ansible.com/ansible/python_3_support.html +    when: +    - ansible_distribution == 'Fedora' +    - ansible_python['version']['major'] != 3 + +  # TODO: Should this be moved into health checks?? +  # Seems as though any check that happens with a corresponding fail should move into health_checks +  - name: Validate python version - ans_dist not Fedora and python must be v2 +    fail: +      msg: "openshift-ansible requires Python 2 for {{ ansible_distribution }}" +    when: +    - ansible_distribution != 'Fedora' +    - ansible_python['version']['major'] != 2 + +  # TODO: Should this be moved into health checks?? +  # Seems as though any check that happens with a corresponding fail should move into health_checks +  # Fail as early as possible if Atomic and old version of Docker +  - when: +    - l_is_atomic | bool +    block: + +    # See https://access.redhat.com/articles/2317361 +    # and https://github.com/ansible/ansible/issues/15892 +    # NOTE: the "'s can not be removed at this level else the docker command will fail +    # NOTE: When ansible >2.2.1.x is used this can be updated per +    # https://github.com/openshift/openshift-ansible/pull/3475#discussion_r103525121 +    - name: Determine Atomic Host Docker Version +      shell: 'CURLY="{"; docker version --format "$CURLY{json .Server.Version}}"' +      register: l_atomic_docker_version + +    - name: assert atomic host docker version is 1.12 or later +      assert: +        that: +        - l_atomic_docker_version.stdout | replace('"', '') | version_compare('1.12','>=') +        msg: Installation on Atomic Host requires Docker 1.12 or later. Please upgrade and restart the Atomic Host. + +  - when: +    - not l_is_atomic | bool +    block: +    - name: Ensure openshift-ansible installer package deps are installed +      package: +        name: "{{ item }}" +        state: present +      with_items: +      - iproute +      - "{{ 'python3-dbus' if ansible_distribution == 'Fedora' else 'python-dbus' }}" +      - PyYAML +      - yum-utils + +    - name: Ensure various deps for running system containers are installed +      package: +        name: "{{ item }}" +        state: present +      with_items: +      - atomic +      - ostree +      - runc +      when: +      - l_any_system_container | bool + +  - name: Gather Cluster facts and set is_containerized if needed +    openshift_facts:        role: common        local_facts: +        debug_level: "{{ openshift_debug_level | default(2) }}" +        deployment_type: "{{ openshift_deployment_type }}" +        deployment_subtype: "{{ openshift_deployment_subtype | default(None) }}" +        cluster_id: "{{ openshift_cluster_id | default('default') }}"          hostname: "{{ openshift_hostname | default(None) }}" -  - set_fact: +        ip: "{{ openshift_ip | default(None) }}" +        is_containerized: "{{ l_is_containerized | default(None) }}" +        is_openvswitch_system_container: "{{ l_is_openvswitch_system_container | default(false) }}" +        is_node_system_container: "{{ l_is_node_system_container | default(false) }}" +        is_master_system_container: "{{ l_is_master_system_container | default(false) }}" +        is_etcd_system_container: "{{ l_is_etcd_system_container | default(false) }}" +        etcd_runtime: "{{ l_etcd_runtime }}" +        system_images_registry: "{{ system_images_registry | default('') }}" +        public_hostname: "{{ openshift_public_hostname | default(None) }}" +        public_ip: "{{ openshift_public_ip | default(None) }}" +        portal_net: "{{ openshift_portal_net | default(openshift_master_portal_net) | default(None) }}" +        http_proxy: "{{ openshift_http_proxy | default(None) }}" +        https_proxy: "{{ openshift_https_proxy | default(None) }}" +        no_proxy: "{{ openshift_no_proxy | default(None) }}" +        generate_no_proxy_hosts: "{{ openshift_generate_no_proxy_hosts | default(True) }}" +        no_proxy_internal_hostnames: "{{ openshift_no_proxy_internal_hostnames | default(None) }}" +        sdn_network_plugin_name: "{{ os_sdn_network_plugin_name | default(None) }}" +        use_openshift_sdn: "{{ openshift_use_openshift_sdn | default(None) }}" + +  - name: initialize_facts set_fact repoquery command +    set_fact: +      repoquery_cmd: "{{ 'dnf repoquery --latest-limit 1 -d 0' if ansible_pkg_mgr == 'dnf' else 'repoquery --plugins' }}" + +  - name: initialize_facts set_fact on openshift_docker_hosted_registry_network +    set_fact:        openshift_docker_hosted_registry_network: "{{ hostvars[groups.oo_first_master.0].openshift.common.portal_net }}" diff --git a/roles/openshift_facts/defaults/main.yml b/roles/openshift_facts/defaults/main.yml deleted file mode 100644 index cc4dc9365..000000000 --- a/roles/openshift_facts/defaults/main.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -openshift_use_system_containers: false diff --git a/roles/openshift_facts/meta/main.yml b/roles/openshift_facts/meta/main.yml index 7eead2d6e..0be3afd24 100644 --- a/roles/openshift_facts/meta/main.yml +++ b/roles/openshift_facts/meta/main.yml @@ -12,5 +12,4 @@ galaxy_info:    categories:    - cloud    - system -dependencies: -- role: openshift_sanitize_inventory +dependencies: [] diff --git a/roles/openshift_facts/tasks/main.yml b/roles/openshift_facts/tasks/main.yml deleted file mode 100644 index 4af02ab96..000000000 --- a/roles/openshift_facts/tasks/main.yml +++ /dev/null @@ -1,118 +0,0 @@ ---- -- name: Detecting Operating System -  stat: -    path: /run/ostree-booted -  register: ostree_booted - -# Locally setup containerized facts for now -- set_fact: -    l_is_atomic: "{{ ostree_booted.stat.exists }}" -    l_use_crio: "{{ openshift_docker_use_crio | default(false) }}" -- set_fact: -    l_is_containerized: "{{ (l_is_atomic | bool) or (containerized | default(false) | bool) }}" -    l_is_openvswitch_system_container: "{{ (openshift_use_openvswitch_system_container | default(openshift_use_system_containers) | bool) }}" -    l_is_node_system_container: "{{ (openshift_use_node_system_container | default(openshift_use_system_containers) | bool) }}" -    l_is_master_system_container: "{{ (openshift_use_master_system_container | default(openshift_use_system_containers) | bool) }}" -    l_is_etcd_system_container: "{{ (openshift_use_etcd_system_container | default(openshift_use_system_containers) | bool) }}" -- set_fact: -    l_any_system_container: "{{ l_is_etcd_system_container or l_is_openvswitch_system_container or l_is_node_system_container or l_is_master_system_container }}" -- set_fact: -    l_etcd_runtime: "{{ 'runc' if l_is_etcd_system_container else 'docker' if l_is_containerized else 'host' }}" - - -- name: Validate python version -  fail: -    msg: | -      openshift-ansible requires Python 3 for {{ ansible_distribution }}; -      For information on enabling Python 3 with Ansible, see https://docs.ansible.com/ansible/python_3_support.html -  when: -  - ansible_distribution == 'Fedora' -  - ansible_python['version']['major'] != 3 -  - r_openshift_facts_ran is not defined - -- name: Validate python version -  fail: -    msg: "openshift-ansible requires Python 2 for {{ ansible_distribution }}" -  when: -  - ansible_distribution != 'Fedora' -  - ansible_python['version']['major'] != 2 -  - r_openshift_facts_ran is not defined - -# Fail as early as possible if Atomic and old version of Docker -- block: - -  # See https://access.redhat.com/articles/2317361 -  # and https://github.com/ansible/ansible/issues/15892 -  # NOTE: the "'s can not be removed at this level else the docker command will fail -  # NOTE: When ansible >2.2.1.x is used this can be updated per -  # https://github.com/openshift/openshift-ansible/pull/3475#discussion_r103525121 -  - name: Determine Atomic Host Docker Version -    shell: 'CURLY="{"; docker version --format "$CURLY{json .Server.Version}}"' -    register: l_atomic_docker_version - -  - assert: -      msg: Installation on Atomic Host requires Docker 1.12 or later. Please upgrade and restart the Atomic Host. -      that: -      - l_atomic_docker_version.stdout | replace('"', '') | version_compare('1.12','>=') - -  when: -  - not l_use_crio -  - l_is_atomic | bool -  - r_openshift_facts_ran is not defined - -- name: Load variables -  include_vars: "{{ item }}" -  with_first_found: -  - "{{ ansible_distribution }}.yml" -  - "default.yml" - -- name: Ensure various deps are installed -  package: name={{ item }} state=present -  with_items: "{{ required_packages }}" -  when: -  - not l_is_atomic | bool -  - r_openshift_facts_ran is not defined - -- name: Ensure various deps for running system containers are installed -  package: name={{ item }} state=present -  with_items: "{{ required_system_containers_packages }}" -  when: -  - not l_is_atomic | bool -  - l_any_system_container | bool -  - r_openshift_facts_ran is not defined - -- name: Gather Cluster facts and set is_containerized if needed -  openshift_facts: -    role: common -    local_facts: -      debug_level: "{{ openshift_debug_level | default(2) }}" -      deployment_type: "{{ openshift_deployment_type }}" -      deployment_subtype: "{{ openshift_deployment_subtype | default(None) }}" -      cluster_id: "{{ openshift_cluster_id | default('default') }}" -      hostname: "{{ openshift_hostname | default(None) }}" -      ip: "{{ openshift_ip | default(None) }}" -      is_containerized: "{{ l_is_containerized | default(None) }}" -      is_openvswitch_system_container: "{{ l_is_openvswitch_system_container | default(false) }}" -      is_node_system_container: "{{ l_is_node_system_container | default(false) }}" -      is_master_system_container: "{{ l_is_master_system_container | default(false) }}" -      is_etcd_system_container: "{{ l_is_etcd_system_container | default(false) }}" -      etcd_runtime: "{{ l_etcd_runtime }}" -      system_images_registry: "{{ system_images_registry | default('') }}" -      public_hostname: "{{ openshift_public_hostname | default(None) }}" -      public_ip: "{{ openshift_public_ip | default(None) }}" -      portal_net: "{{ openshift_portal_net | default(openshift_master_portal_net) | default(None) }}" -      http_proxy: "{{ openshift_http_proxy | default(None) }}" -      https_proxy: "{{ openshift_https_proxy | default(None) }}" -      no_proxy: "{{ openshift_no_proxy | default(None) }}" -      generate_no_proxy_hosts: "{{ openshift_generate_no_proxy_hosts | default(True) }}" -      no_proxy_internal_hostnames: "{{ openshift_no_proxy_internal_hostnames | default(None) }}" -      sdn_network_plugin_name: "{{ os_sdn_network_plugin_name | default(None) }}" -      use_openshift_sdn: "{{ openshift_use_openshift_sdn | default(None) }}" - -- name: Set repoquery command -  set_fact: -    repoquery_cmd: "{{ 'dnf repoquery --latest-limit 1 -d 0' if ansible_pkg_mgr == 'dnf' else 'repoquery --plugins' }}" - -- name: Register that this already ran -  set_fact: -    r_openshift_facts_ran: True diff --git a/roles/openshift_facts/vars/Fedora.yml b/roles/openshift_facts/vars/Fedora.yml deleted file mode 100644 index 745f5f398..000000000 --- a/roles/openshift_facts/vars/Fedora.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -required_packages: -  - iproute -  - python3-dbus -  - PyYAML -  - yum-utils diff --git a/roles/openshift_facts/vars/default.yml b/roles/openshift_facts/vars/default.yml deleted file mode 100644 index 3cd616d16..000000000 --- a/roles/openshift_facts/vars/default.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -required_packages: -  - iproute -  - python-dbus -  - PyYAML -  - yum-utils diff --git a/roles/openshift_facts/vars/main.yml b/roles/openshift_facts/vars/main.yml deleted file mode 100644 index 89d4034d3..000000000 --- a/roles/openshift_facts/vars/main.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -required_system_containers_packages: -  - atomic -  - ostree -  - runc diff --git a/roles/openshift_health_checker/meta/main.yml b/roles/openshift_health_checker/meta/main.yml index 4d141974c..ed97d539c 100644 --- a/roles/openshift_health_checker/meta/main.yml +++ b/roles/openshift_health_checker/meta/main.yml @@ -1,5 +1 @@  --- -dependencies: -  - role: openshift_facts -  - role: openshift_repos -  - role: openshift_version diff --git a/test/integration/openshift_health_checker/preflight/playbooks/package_availability_missing_required.yml b/test/integration/openshift_health_checker/preflight/playbooks/package_availability_missing_required.yml index a557282b4..9875de9aa 100644 --- a/test/integration/openshift_health_checker/preflight/playbooks/package_availability_missing_required.yml +++ b/test/integration/openshift_health_checker/preflight/playbooks/package_availability_missing_required.yml @@ -8,12 +8,6 @@  - name: Fail as required packages cannot be installed    hosts: all -  pre_tasks: - -    # run before roles to prevent openshift_version breaking -    - include: tasks/enable_repo.yml -      vars: { repo_name: "ose-3.2" } -    roles:      - openshift_health_checker diff --git a/test/integration/openshift_health_checker/preflight/playbooks/package_update_dep_missing.yml b/test/integration/openshift_health_checker/preflight/playbooks/package_update_dep_missing.yml index 0929b73ce..9f3aad7bd 100644 --- a/test/integration/openshift_health_checker/preflight/playbooks/package_update_dep_missing.yml +++ b/test/integration/openshift_health_checker/preflight/playbooks/package_update_dep_missing.yml @@ -8,12 +8,6 @@  - name: Fails when a dependency required for update is missing    hosts: all -  pre_tasks: - -    # run before roles to prevent openshift_version breaking -    - include: tasks/enable_repo.yml -      vars: { repo_name: "ose-3.2" } -    roles:      - openshift_health_checker diff --git a/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_broken.yml b/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_broken.yml index f8790358a..84e9360f5 100644 --- a/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_broken.yml +++ b/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_broken.yml @@ -8,12 +8,6 @@  - name: Fails when a repo definition is completely broken    hosts: all -  pre_tasks: - -    # run before roles to prevent openshift_version breaking -    - include: tasks/enable_repo.yml -      vars: { repo_name: "ose-3.2" } -    roles:      - openshift_health_checker diff --git a/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_disabled.yml b/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_disabled.yml index e2bb84715..f4c1bedfa 100644 --- a/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_disabled.yml +++ b/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_disabled.yml @@ -8,12 +8,6 @@  - name: Succeeds when nothing blocks a yum update    hosts: all -  pre_tasks: - -    # run before roles to prevent openshift_version breaking -    - include: tasks/enable_repo.yml -      vars: { repo_name: "ose-3.2" } -    roles:      - openshift_health_checker diff --git a/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_unreachable.yml b/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_unreachable.yml index 28efdd81d..409057792 100644 --- a/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_unreachable.yml +++ b/test/integration/openshift_health_checker/preflight/playbooks/package_update_repo_unreachable.yml @@ -8,12 +8,6 @@  - name: Fails when repo content is not available    hosts: all -  pre_tasks: - -    # run before roles to prevent openshift_version breaking -    - include: tasks/enable_repo.yml -      vars: { repo_name: "ose-3.2" } -    roles:      - openshift_health_checker diff --git a/test/integration/openshift_health_checker/preflight/playbooks/package_version_matches.yml b/test/integration/openshift_health_checker/preflight/playbooks/package_version_matches.yml index 58bed0fc0..d88f82a4a 100644 --- a/test/integration/openshift_health_checker/preflight/playbooks/package_version_matches.yml +++ b/test/integration/openshift_health_checker/preflight/playbooks/package_version_matches.yml @@ -8,12 +8,6 @@  - name: Success when AOS version matches openshift_release    hosts: all -  pre_tasks: - -    # run before roles to prevent openshift_version breaking -    - include: tasks/enable_repo.yml -      vars: { repo_name: "ose-3.2" } -    roles:      - openshift_health_checker diff --git a/test/integration/openshift_health_checker/preflight/playbooks/package_version_mismatches.yml b/test/integration/openshift_health_checker/preflight/playbooks/package_version_mismatches.yml index c26413009..401ad1e21 100644 --- a/test/integration/openshift_health_checker/preflight/playbooks/package_version_mismatches.yml +++ b/test/integration/openshift_health_checker/preflight/playbooks/package_version_mismatches.yml @@ -5,16 +5,10 @@      image: preflight-aos-package-checks      l_host_vars:        deployment_type: openshift-enterprise -      openshift_release: 3.3 +      openshift_release: 3.2  - name: Failure when AOS version doesn't match openshift_release    hosts: all -  pre_tasks: - -    # run before roles to prevent openshift_version breaking -    - include: tasks/enable_repo.yml -      vars: { repo_name: "ose-3.3" } -    roles:      - openshift_health_checker @@ -23,10 +17,10 @@          # put the repo back to disabled          - include: tasks/enable_repo.yml -          vars: { repo_name: "ose-3.3", repo_enabled: 0 } +          vars: { repo_name: "ose-3.2", repo_enabled: 0 }          # test with wrong repo enabled          - include: tasks/enable_repo.yml -          vars: { repo_name: "ose-3.2" } +          vars: { repo_name: "ose-3.3" }          - action: openshift_health_check            args:              checks: [ 'package_version' ] diff --git a/test/integration/openshift_health_checker/preflight/playbooks/package_version_multiple.yml b/test/integration/openshift_health_checker/preflight/playbooks/package_version_multiple.yml index 850a55a72..88613802b 100644 --- a/test/integration/openshift_health_checker/preflight/playbooks/package_version_multiple.yml +++ b/test/integration/openshift_health_checker/preflight/playbooks/package_version_multiple.yml @@ -7,12 +7,6 @@  - name: Fails when multiple AOS versions are available    hosts: all -  pre_tasks: - -    # run before roles to prevent openshift_version breaking -    - include: tasks/enable_repo.yml -      vars: { repo_name: "ose-3.2" } -    roles:      - openshift_health_checker diff --git a/test/integration/openshift_health_checker/setup_container.yml b/test/integration/openshift_health_checker/setup_container.yml index 33e94cf1f..413754fcd 100644 --- a/test/integration/openshift_health_checker/setup_container.yml +++ b/test/integration/openshift_health_checker/setup_container.yml @@ -44,5 +44,19 @@        delegate_to: "{{ container_name }}"        with_dict: "{{ l_host_vars | default({}) }}" +- hosts: all +  tasks: + +    # run before openshift_version to prevent it breaking +    - include: preflight/playbooks/tasks/enable_repo.yml +      vars: { repo_name: "ose-3.2" } +  - include: ../../../playbooks/byo/openshift-cluster/initialize_groups.yml -- include: ../../../playbooks/common/openshift-cluster/evaluate_groups.yml +- include: ../../../playbooks/common/openshift-cluster/std_include.yml + +- hosts: all +  tasks: + +    # put it back like it was for the tests +    - include: preflight/playbooks/tasks/enable_repo.yml +      vars: { repo_name: "ose-3.2", enabled: False } | 
