diff options
| author | Luke Meyer <lmeyer@redhat.com> | 2017-03-22 15:23:29 -0400 | 
|---|---|---|
| committer | Luke Meyer <lmeyer@redhat.com> | 2017-03-29 11:59:47 -0400 | 
| commit | f5827111a7609b3c6f7f72a03c8bc13fee2bbb60 (patch) | |
| tree | 8b1cacfc6290c3a9d33c5a23c56e2715a4d2c399 /roles | |
| parent | d77a9a685c3add9ef9c4d659ee47ebf35e145fe4 (diff) | |
| download | openshift-f5827111a7609b3c6f7f72a03c8bc13fee2bbb60.tar.gz openshift-f5827111a7609b3c6f7f72a03c8bc13fee2bbb60.tar.bz2 openshift-f5827111a7609b3c6f7f72a03c8bc13fee2bbb60.tar.xz openshift-f5827111a7609b3c6f7f72a03c8bc13fee2bbb60.zip | |
validate and normalize inventory variables
In openshift_repos and everywhere, ensure deployment_type and
openshift_deployment_type are defined and the same.
We really want to set openshift_deployment_type, but users will likely
still have just deployment_type, so accept both. And don't make every
playbook default openshift_deployment_type to deployment_type.
This introduces the openshift_sanitize_inventory role to run before anything else.
Diffstat (limited to 'roles')
| -rw-r--r-- | roles/openshift_facts/meta/main.yml | 3 | ||||
| -rw-r--r-- | roles/openshift_facts/tasks/main.yml | 3 | ||||
| -rw-r--r-- | roles/openshift_repos/meta/main.yml | 3 | ||||
| -rw-r--r-- | roles/openshift_repos/tasks/main.yaml | 4 | ||||
| -rw-r--r-- | roles/openshift_sanitize_inventory/README.md | 37 | ||||
| -rw-r--r-- | roles/openshift_sanitize_inventory/meta/main.yml | 15 | ||||
| -rw-r--r-- | roles/openshift_sanitize_inventory/tasks/main.yml | 28 | ||||
| -rw-r--r-- | roles/openshift_sanitize_inventory/vars/main.yml (renamed from roles/openshift_repos/vars/main.yml) | 0 | ||||
| -rw-r--r-- | roles/openshift_version/tasks/main.yml | 8 | 
9 files changed, 85 insertions, 16 deletions
| diff --git a/roles/openshift_facts/meta/main.yml b/roles/openshift_facts/meta/main.yml index 0be3afd24..7eead2d6e 100644 --- a/roles/openshift_facts/meta/main.yml +++ b/roles/openshift_facts/meta/main.yml @@ -12,4 +12,5 @@ galaxy_info:    categories:    - cloud    - system -dependencies: [] +dependencies: +- role: openshift_sanitize_inventory diff --git a/roles/openshift_facts/tasks/main.yml b/roles/openshift_facts/tasks/main.yml index 73c668c72..93972f0e0 100644 --- a/roles/openshift_facts/tasks/main.yml +++ b/roles/openshift_facts/tasks/main.yml @@ -64,8 +64,7 @@      role: common      local_facts:        debug_level: "{{ openshift_debug_level | default(2) }}" -      # TODO: Deprecate deployment_type in favor of openshift_deployment_type -      deployment_type: "{{ openshift_deployment_type | default(deployment_type) }}" +      deployment_type: "{{ openshift_deployment_type }}"        deployment_subtype: "{{ openshift_deployment_subtype | default(None) }}"        cluster_id: "{{ openshift_cluster_id | default('default') }}"        hostname: "{{ openshift_hostname | default(None) }}" diff --git a/roles/openshift_repos/meta/main.yml b/roles/openshift_repos/meta/main.yml index cc18c453c..1b043863b 100644 --- a/roles/openshift_repos/meta/main.yml +++ b/roles/openshift_repos/meta/main.yml @@ -11,4 +11,5 @@ galaxy_info:      - 7    categories:    - cloud -dependencies: [] +dependencies: +- role: openshift_sanitize_inventory diff --git a/roles/openshift_repos/tasks/main.yaml b/roles/openshift_repos/tasks/main.yaml index ffb760bfe..84a0905cc 100644 --- a/roles/openshift_repos/tasks/main.yaml +++ b/roles/openshift_repos/tasks/main.yaml @@ -4,10 +4,6 @@      path: /run/ostree-booted    register: ostree_booted -- assert: -    that: openshift_deployment_type in known_openshift_deployment_types -    msg: "openshift_deployment_type must be one of {{ known_openshift_deployment_types }}" -  - block:    - name: Ensure libselinux-python is installed      package: name=libselinux-python state=present diff --git a/roles/openshift_sanitize_inventory/README.md b/roles/openshift_sanitize_inventory/README.md new file mode 100644 index 000000000..23f6b84fc --- /dev/null +++ b/roles/openshift_sanitize_inventory/README.md @@ -0,0 +1,37 @@ +OpenShift Inventory +=================== + +Provides a role to validate and normalize the variables the user has +provided. This role should run before pretty much everything else so that +this kind of logic only has to be in one place. However, complicated +business logic should usually be left to other roles. + +Requirements +------------ + +None + +Role Variables +-------------- + +None + +Dependencies +------------ + +None + +Example Playbook +---------------- + +TODO + +License +------- + +Apache License, Version 2.0 + +Author Information +------------------ + +OpenShift dev (dev@lists.openshift.redhat.com) diff --git a/roles/openshift_sanitize_inventory/meta/main.yml b/roles/openshift_sanitize_inventory/meta/main.yml new file mode 100644 index 000000000..f5b37186e --- /dev/null +++ b/roles/openshift_sanitize_inventory/meta/main.yml @@ -0,0 +1,15 @@ +--- +galaxy_info: +  author: OpenShift dev +  description: +  company: Red Hat, Inc. +  license: Apache License, Version 2.0 +  min_ansible_version: 1.8 +  platforms: +  - name: EL +    versions: +    - 7 +  categories: +  - cloud +  - system +dependencies: [] diff --git a/roles/openshift_sanitize_inventory/tasks/main.yml b/roles/openshift_sanitize_inventory/tasks/main.yml new file mode 100644 index 000000000..fc562c42c --- /dev/null +++ b/roles/openshift_sanitize_inventory/tasks/main.yml @@ -0,0 +1,28 @@ +--- +- name: Standardize on latest variable names +  no_log: True  # keep task description legible +  set_fact: +    # goal is to deprecate deployment_type in favor of openshift_deployment_type. +    # both will be accepted for now, but code should refer to the new name. +    # TODO: once this is well-documented, add deprecation notice if using old name. +    deployment_type: "{{ openshift_deployment_type | default(deployment_type) | default | string }}" +    openshift_deployment_type: "{{ openshift_deployment_type | default(deployment_type) | default | string }}" + +- name: Normalize openshift_release +  no_log: True  # keep task description legible +  set_fact: +    # Normalize release if provided, e.g. "v3.5" => "3.5" +    # Currently this is not required to be defined for all installs, and the +    # `openshift_version` role can generally figure out the specific version +    # that gets installed (e.g. 3.5.0.1). So consider this the user's expressed +    # intent (if any), not the authoritative version that will be installed. +    openshift_release: "{{ openshift_release | string | regex_replace('^v', '') }}" +  when: openshift_release is defined + +- name: Ensure a valid deployment type has been given. +  # this variable is required; complain early and clearly if it is invalid. +  when: openshift_deployment_type not in known_openshift_deployment_types +  fail: +    msg: |- +      Please set openshift_deployment_type to one of: +      {{ known_openshift_deployment_types | join(', ') }} diff --git a/roles/openshift_repos/vars/main.yml b/roles/openshift_sanitize_inventory/vars/main.yml index da48e42c1..da48e42c1 100644 --- a/roles/openshift_repos/vars/main.yml +++ b/roles/openshift_sanitize_inventory/vars/main.yml diff --git a/roles/openshift_version/tasks/main.yml b/roles/openshift_version/tasks/main.yml index 0f2a660a7..35953b744 100644 --- a/roles/openshift_version/tasks/main.yml +++ b/roles/openshift_version/tasks/main.yml @@ -13,14 +13,6 @@  # Normalize some values that we need in a certain format that might be confusing:  - set_fact: -    openshift_release: "{{ openshift_release[1:] }}" -  when: openshift_release is defined and openshift_release[0] == 'v' - -- set_fact: -    openshift_release: "{{ openshift_release | string }}" -  when: openshift_release is defined - -- set_fact:      openshift_image_tag: "{{ 'v' + openshift_image_tag }}"    when: openshift_image_tag is defined and openshift_image_tag[0] != 'v' and openshift_image_tag != 'latest' | 
