diff options
author | Scott Dodson <sdodson@redhat.com> | 2017-08-08 07:30:14 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-08 07:30:14 -0400 |
commit | 0569c5069dabeea9e2fe94cd097cb6f2b1540867 (patch) | |
tree | c6bad07651c9c7b5bf99491343aba04edc084b4e | |
parent | 085e3eb2408cb89d82bec0e37f71a255667496ec (diff) | |
parent | 8a7f40a470b730e077deae5276710b674d346dbe (diff) | |
download | openshift-0569c5069dabeea9e2fe94cd097cb6f2b1540867.tar.gz openshift-0569c5069dabeea9e2fe94cd097cb6f2b1540867.tar.bz2 openshift-0569c5069dabeea9e2fe94cd097cb6f2b1540867.tar.xz openshift-0569c5069dabeea9e2fe94cd097cb6f2b1540867.zip |
Merge pull request #4739 from kwoodson/openshift_facts_refactor
Reduce openshift_facts dependencies.
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 } |