diff options
Diffstat (limited to 'roles')
28 files changed, 345 insertions, 141 deletions
diff --git a/roles/openshift_sanitize_inventory/library/conditional_set_fact.py b/roles/lib_openshift/library/conditional_set_fact.py index f61801714..363399f33 100644 --- a/roles/openshift_sanitize_inventory/library/conditional_set_fact.py +++ b/roles/lib_openshift/library/conditional_set_fact.py @@ -29,6 +29,10 @@ EXAMPLES = '''      fact1: not_defined_variable      fact2: defined_variable +- name: Conditionally set fact falling back on default +  conditional_set_fact: +    fact1: not_defined_var | defined_variable +  ''' @@ -48,12 +52,14 @@ def run_module():      is_changed = False      for param in module.params['vars']: -        other_var = module.params['vars'][param] - -        if other_var in module.params['facts']: -            local_facts[param] = module.params['facts'][other_var] -            if not is_changed: -                is_changed = True +        other_vars = module.params['vars'][param].replace(" ", "") + +        for other_var in other_vars.split('|'): +            if other_var in module.params['facts']: +                local_facts[param] = module.params['facts'][other_var] +                if not is_changed: +                    is_changed = True +                break      return module.exit_json(changed=is_changed,  # noqa: F405                              ansible_facts=local_facts) diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py index d659286dc..d7c358a2f 100755 --- a/roles/openshift_facts/library/openshift_facts.py +++ b/roles/openshift_facts/library/openshift_facts.py @@ -656,26 +656,6 @@ def set_nodename(facts):      return facts -def migrate_oauth_template_facts(facts): -    """ -    Migrate an old oauth template fact to a newer format if it's present. - -    The legacy 'oauth_template' fact was just a filename, and assumed you were -    setting the 'login' template. - -    The new pluralized 'oauth_templates' fact is a dict mapping the template -    name to a filename. - -    Simplify the code after this by merging the old fact into the new. -    """ -    if 'master' in facts and 'oauth_template' in facts['master']: -        if 'oauth_templates' not in facts['master']: -            facts['master']['oauth_templates'] = {"login": facts['master']['oauth_template']} -        elif 'login' not in facts['master']['oauth_templates']: -            facts['master']['oauth_templates']['login'] = facts['master']['oauth_template'] -    return facts - -  def format_url(use_ssl, hostname, port, path=''):      """ Format url based on ssl flag, hostname, port and path @@ -1387,7 +1367,6 @@ class OpenShiftFacts(object):          facts = merge_facts(facts,                              local_facts,                              additive_facts_to_overwrite) -        facts = migrate_oauth_template_facts(facts)          facts['current_config'] = get_current_config(facts)          facts = set_url_facts_if_unset(facts)          facts = set_identity_providers_if_unset(facts) diff --git a/roles/openshift_hosted/tasks/registry.yml b/roles/openshift_hosted/tasks/registry.yml index 429f0c514..22294e3d4 100644 --- a/roles/openshift_hosted/tasks/registry.yml +++ b/roles/openshift_hosted/tasks/registry.yml @@ -1,10 +1,4 @@  --- -- name: Create temp directory for doing work in -  command: mktemp -d /tmp/openshift-hosted-ansible-XXXXXX -  register: mktempHosted -  changed_when: False -  check_mode: no -  - name: setup firewall    import_tasks: firewall.yml    vars: @@ -132,25 +126,10 @@      edits: "{{ openshift_hosted_registry_edits }}"      force: "{{ True|bool in openshift_hosted_registry_force }}" +# TODO(michaelgugino) remove this set fact.  It is currently necessary due to +# custom module not properly templating variables.  - name: setup registry list    set_fact:      r_openshift_hosted_registry_list:      - name: "{{ openshift_hosted_registry_name }}"        namespace: "{{ openshift_hosted_registry_namespace }}" - -- name: Wait for pod (Registry) -  include_tasks: wait_for_pod.yml -  vars: -    l_openshift_hosted_wait_for_pod: "{{ openshift_hosted_registry_wait }}" -    l_openshift_hosted_wfp_items: "{{ r_openshift_hosted_registry_list }}" - -- include_tasks: storage/glusterfs.yml -  when: -  - openshift_hosted_registry_storage_kind | default(none) == 'glusterfs' or openshift_hosted_registry_storage_glusterfs_swap - -- name: Delete temp directory -  file: -    name: "{{ mktempHosted.stdout }}" -    state: absent -  changed_when: False -  check_mode: no diff --git a/roles/openshift_hosted/tasks/registry_storage.yml b/roles/openshift_hosted/tasks/registry_storage.yml new file mode 100644 index 000000000..aa66a7867 --- /dev/null +++ b/roles/openshift_hosted/tasks/registry_storage.yml @@ -0,0 +1,4 @@ +--- +- include_tasks: storage/glusterfs.yml +  when: +  - openshift_hosted_registry_storage_kind | default(none) == 'glusterfs' or openshift_hosted_registry_storage_glusterfs_swap diff --git a/roles/openshift_hosted/tasks/router.yml b/roles/openshift_hosted/tasks/router.yml index 8ecaacb4a..2dc9c98f6 100644 --- a/roles/openshift_hosted/tasks/router.yml +++ b/roles/openshift_hosted/tasks/router.yml @@ -98,9 +98,3 @@      ports: "{{ item.ports }}"      stats_port: "{{ item.stats_port }}"    with_items: "{{ openshift_hosted_routers }}" - -- name: Wait for pod (Routers) -  include_tasks: wait_for_pod.yml -  vars: -    l_openshift_hosted_wait_for_pod: "{{ openshift_hosted_router_wait }}" -    l_openshift_hosted_wfp_items: "{{ openshift_hosted_routers }}" diff --git a/roles/openshift_hosted/tasks/wait_for_pod.yml b/roles/openshift_hosted/tasks/wait_for_pod.yml index f4b9939cc..a14b0febc 100644 --- a/roles/openshift_hosted/tasks/wait_for_pod.yml +++ b/roles/openshift_hosted/tasks/wait_for_pod.yml @@ -7,7 +7,7 @@                          --namespace {{ item.namespace | default('default') }} \                          --config {{ openshift_master_config_dir }}/admin.kubeconfig      async: 600 -    poll: 15 +    poll: 5      with_items: "{{ l_openshift_hosted_wfp_items }}"      failed_when: false @@ -28,8 +28,8 @@               -o jsonpath='{ .metadata.annotations.openshift\.io/deployment\.phase }'      register: openshift_hosted_wfp_rc_phase      until: "'Running' not in openshift_hosted_wfp_rc_phase.stdout" -    delay: 15 -    retries: 40 +    delay: 5 +    retries: 60      failed_when: "'Failed' in openshift_hosted_wfp_rc_phase.stdout"      with_together:      - "{{ l_openshift_hosted_wfp_items }}" diff --git a/roles/openshift_logging/filter_plugins/openshift_logging.py b/roles/openshift_logging/filter_plugins/openshift_logging.py index e1a5ea726..ba412b5a6 100644 --- a/roles/openshift_logging/filter_plugins/openshift_logging.py +++ b/roles/openshift_logging/filter_plugins/openshift_logging.py @@ -102,6 +102,28 @@ def serviceaccount_namespace(qualified_sa, default=None):      return seg[-1] +def flatten_dict(data, parent_key=None): +    """ This filter plugin will flatten a dict and its sublists into a single dict +    """ +    if not isinstance(data, dict): +        raise RuntimeError("flatten_dict failed, expects to flatten a dict") + +    merged = dict() + +    for key in data: +        if parent_key is not None: +            insert_key = '.'.join((parent_key, key)) +        else: +            insert_key = key + +        if isinstance(data[key], dict): +            merged.update(flatten_dict(data[key], insert_key)) +        else: +            merged[insert_key] = data[key] + +    return merged + +  # pylint: disable=too-few-public-methods  class FilterModule(object):      ''' OpenShift Logging Filters ''' @@ -117,5 +139,6 @@ class FilterModule(object):              'es_storage': es_storage,              'serviceaccount_name': serviceaccount_name,              'serviceaccount_namespace': serviceaccount_namespace, -            'walk': walk +            'walk': walk, +            "flatten_dict": flatten_dict          } diff --git a/roles/openshift_logging/library/logging_patch.py b/roles/openshift_logging/library/logging_patch.py new file mode 100644 index 000000000..d2c0bc456 --- /dev/null +++ b/roles/openshift_logging/library/logging_patch.py @@ -0,0 +1,112 @@ +#!/usr/bin/python + +""" Ansible module to help with creating context patch file with whitelisting for logging """ + +import difflib +import re + +from ansible.module_utils.basic import AnsibleModule + + +DOCUMENTATION = ''' +--- +module: logging_patch + +short_description: This will create a context patch file while giving ability +  to whitelist some lines (excluding them from comparison) + +description: +    - "To create configmap patches for logging" + +author: +    - Eric Wolinetz ewolinet@redhat.com +''' + + +EXAMPLES = ''' +- logging_patch: +    original_file: "{{ tempdir }}/current.yml" +    new_file: "{{ configmap_new_file }}" +    whitelist: "{{ configmap_protected_lines | default([]) }}" + +''' + + +def account_for_whitelist(file_contents, white_list=None): +    """ This method will remove lines that contain whitelist values from the content +        of the file so that we aren't build a patch based on that line + +        Usage: + +          for file_contents: + +            index: +              number_of_shards: {{ es_number_of_shards | default ('1') }} +              number_of_replicas: {{ es_number_of_replicas | default ('0') }} +              unassigned.node_left.delayed_timeout: 2m +              translog: +                flush_threshold_size: 256mb +                flush_threshold_period: 5m + + +          and white_list: + +            ['number_of_shards', 'number_of_replicas'] + + +        We would end up with: + +            index: +              unassigned.node_left.delayed_timeout: 2m +              translog: +                flush_threshold_size: 256mb +                flush_threshold_period: 5m + +    """ + +    for line in white_list: +        file_contents = re.sub(r".*%s:.*\n" % line, "", file_contents) + +    return file_contents + + +def run_module(): +    """ The body of the module, we check if the variable name specified as the value +        for the key is defined. If it is then we use that value as for the original key """ + +    module = AnsibleModule( +        argument_spec=dict( +            original_file=dict(type='str', required=True), +            new_file=dict(type='str', required=True), +            whitelist=dict(required=False, type='list', default=[]) +        ), +        supports_check_mode=True +    ) + +    original_fh = open(module.params['original_file'], "r") +    original_contents = original_fh.read() +    original_fh.close() + +    original_contents = account_for_whitelist(original_contents, module.params['whitelist']) + +    new_fh = open(module.params['new_file'], "r") +    new_contents = new_fh.read() +    new_fh.close() + +    new_contents = account_for_whitelist(new_contents, module.params['whitelist']) + +    uni_diff = difflib.unified_diff(new_contents.splitlines(), +                                    original_contents.splitlines(), +                                    lineterm='') + +    return module.exit_json(changed=False,  # noqa: F405 +                            raw_patch="\n".join(uni_diff)) + + +def main(): +    """ main """ +    run_module() + + +if __name__ == '__main__': +    main() diff --git a/roles/openshift_logging/library/openshift_logging_facts.py b/roles/openshift_logging/library/openshift_logging_facts.py index 98d0d1c4f..302a9b4c9 100644 --- a/roles/openshift_logging/library/openshift_logging_facts.py +++ b/roles/openshift_logging/library/openshift_logging_facts.py @@ -204,6 +204,14 @@ class OpenshiftLoggingFacts(OCBaseCommand):              if comp is not None:                  self.add_facts_for(comp, "services", name, dict()) +    # pylint: disable=too-many-arguments +    def facts_from_configmap(self, comp, kind, name, config_key, yaml_file=None): +        '''Extracts facts in logging namespace from configmap''' +        if yaml_file is not None: +            config_facts = yaml.load(yaml_file) +            self.facts[comp][kind][name][config_key] = config_facts +            self.facts[comp][kind][name]["raw"] = yaml_file +      def facts_for_configmaps(self, namespace):          ''' Gathers facts for configmaps in logging namespace '''          self.default_keys_for("configmaps") @@ -214,7 +222,10 @@ class OpenshiftLoggingFacts(OCBaseCommand):              name = item["metadata"]["name"]              comp = self.comp(name)              if comp is not None: -                self.add_facts_for(comp, "configmaps", name, item["data"]) +                self.add_facts_for(comp, "configmaps", name, dict(item["data"])) +                if comp in ["elasticsearch", "elasticsearch_ops"]: +                    for config_key in item["data"]: +                        self.facts_from_configmap(comp, "configmaps", name, config_key, item["data"][config_key])      def facts_for_oauthclients(self, namespace):          ''' Gathers facts for oauthclients used with logging ''' diff --git a/roles/openshift_logging/tasks/install_logging.yaml b/roles/openshift_logging/tasks/install_logging.yaml index 11f59652c..913478027 100644 --- a/roles/openshift_logging/tasks/install_logging.yaml +++ b/roles/openshift_logging/tasks/install_logging.yaml @@ -4,6 +4,9 @@      oc_bin: "{{openshift_client_binary}}"      openshift_logging_namespace: "{{openshift_logging_namespace}}" +## This is include vs import because we need access to group/inventory variables +- include_tasks: set_defaults_from_current.yml +  - name: Set logging project    oc_project:      state: present diff --git a/roles/openshift_logging/tasks/patch_configmap_file.yaml b/roles/openshift_logging/tasks/patch_configmap_file.yaml new file mode 100644 index 000000000..30087fe6a --- /dev/null +++ b/roles/openshift_logging/tasks/patch_configmap_file.yaml @@ -0,0 +1,35 @@ +--- +## The purpose of this task file is to get a patch that is based on the diff +##  between configmap_current_file and configmap_new_file. The module +##  logging_patch takes the paths of two files to compare and also a list of +##  variables whose line we exclude from the diffs. +##  We then patch the new configmap file so that we can build a configmap +##  using that file later. We then use oc apply to idempotenly modify any +##  existing configmap. + +## The following variables are expected to be provided when including this task: +# __configmap_output         -- This is provided to us from patch_configmap_files.yaml +#                                it is a dict of the configmap where configmap_current_file exists +# configmap_current_file     -- The name of the data file in the __configmap_output +# configmap_new_file         -- The path to the file that we intend to oc apply later +#                                we apply our generated patch to this file. +# configmap_protected_lines  -- The list of variables to exclude from the diff + +- copy: +    content: "{{ __configmap_output.results.results[0]['data'][configmap_current_file] }}" +    dest: "{{ tempdir }}/current.yml" + +- logging_patch: +    original_file: "{{ tempdir }}/current.yml" +    new_file: "{{ configmap_new_file }}" +    whitelist: "{{ configmap_protected_lines | default([]) }}" +  register: patch_output + +- copy: +    content: "{{ patch_output.raw_patch }}\n" +    dest: "{{ tempdir }}/patch.patch" +  when: patch_output.raw_patch | length > 0 + +- command: > +    patch --force --quiet -u "{{ configmap_new_file }}" "{{ tempdir }}/patch.patch" +  when: patch_output.raw_patch | length > 0 diff --git a/roles/openshift_logging/tasks/patch_configmap_files.yaml b/roles/openshift_logging/tasks/patch_configmap_files.yaml new file mode 100644 index 000000000..74a9cc287 --- /dev/null +++ b/roles/openshift_logging/tasks/patch_configmap_files.yaml @@ -0,0 +1,31 @@ +--- +## The purpose of this task file is to take in a list of configmap files provided +##  in the variable configmap_file_names, which correspond to the data sections +##  within a configmap. We iterate over each of these files and create a patch +##  from the diff between current_file and new_file to try to maintain any custom +##  changes that a user may have made to a currently deployed configmap while +##  trying to idempotently update with any role provided files. + +## The following variables are expected to be provided when including this task: +# configmap_name        -- This is the name of the configmap that the files exist in +# configmap_namespace   -- The namespace that the configmap lives in +# configmap_file_names  -- This is expected to be passed in as a dict +#   current_file        -- The name of the data entry within the configmap +#   new_file            -- The file path to the file we are comparing to current_file +#   protected_lines     -- List of variables whose line will be excluded when creating a diff + +- oc_configmap: +    name: "{{ configmap_name }}" +    state: list +    namespace: "{{ configmap_namespace }}" +  register: __configmap_output + +- when: __configmap_output.results.stderr is undefined +  include_tasks: patch_configmap_file.yaml +  vars: +    configmap_current_file: "{{ configmap_files.current_file }}" +    configmap_new_file: "{{ configmap_files.new_file }}" +    configmap_protected_lines: "{{ configmap_files.protected_lines | default([]) }}" +  with_items: "{{ configmap_file_names }}" +  loop_control: +    loop_var: configmap_files diff --git a/roles/openshift_logging/tasks/set_defaults_from_current.yml b/roles/openshift_logging/tasks/set_defaults_from_current.yml new file mode 100644 index 000000000..dde362abe --- /dev/null +++ b/roles/openshift_logging/tasks/set_defaults_from_current.yml @@ -0,0 +1,34 @@ +--- + +## We are pulling default values from configmaps if they exist already +## Using conditional_set_fact allows us to set the value of a variable based on +##  the value of another one, if it is already defined. Else we don't set the +##  left hand side (it stays undefined as well). + +## conditional_set_fact allows us to specify a fact source, so first we try to +##  set variables in the logging-elasticsearch & logging-elasticsearch-ops configmaps +##  afterwards we set the value of the variable based on the value in the inventory +##  but fall back to using the value from a configmap as a default. If neither is set +##  then the variable remains undefined and the role default will be used. + +- conditional_set_fact: +    facts: "{{ openshift_logging_facts['elasticsearch']['configmaps']['logging-elasticsearch']['elasticsearch.yml'] | flatten_dict }}" +    vars: +      __openshift_logging_es_number_of_shards: index.number_of_shards +      __openshift_logging_es_number_of_replicas: index.number_of_replicas +  when: openshift_logging_facts['elasticsearch']['configmaps']['logging-elasticsearch'] is defined + +- conditional_set_fact: +    facts: "{{ openshift_logging_facts['elasticsearch_ops']['configmaps']['logging-elasticsearch-ops']['elasticsearch.yml'] | flatten_dict }}" +    vars: +      __openshift_logging_es_ops_number_of_shards: index.number_of_shards +      __openshift_logging_es_ops_number_of_replicas: index.number_of_replicas +  when: openshift_logging_facts['elasticsearch_ops']['configmaps']['logging-elasticsearch-ops'] is defined + +- conditional_set_fact: +    facts: "{{ hostvars[inventory_hostname] }}" +    vars: +      openshift_logging_es_number_of_shards: openshift_logging_es_number_of_shards | __openshift_logging_es_number_of_shards +      openshift_logging_es_number_of_replicas: openshift_logging_es_number_of_replicas | __openshift_logging_es_number_of_replicas +      openshift_logging_es_ops_number_of_shards: openshift_logging_es_ops_number_of_shards | __openshift_logging_es_ops_number_of_shards +      openshift_logging_es_ops_number_of_replicas: openshift_logging_es_ops_number_of_replicas | __openshift_logging_es_ops_number_of_replicas diff --git a/roles/openshift_logging_curator/tasks/main.yaml b/roles/openshift_logging_curator/tasks/main.yaml index 524e239b7..53b464113 100644 --- a/roles/openshift_logging_curator/tasks/main.yaml +++ b/roles/openshift_logging_curator/tasks/main.yaml @@ -54,14 +54,17 @@  - copy:      src: curator.yml      dest: "{{ tempdir }}/curator.yml" -  when: curator_config_contents is undefined    changed_when: no -- copy: -    content: "{{ curator_config_contents }}" -    dest: "{{ tempdir }}/curator.yml" -  when: curator_config_contents is defined -  changed_when: no +- include_role: +    name: openshift_logging +    tasks_from: patch_configmap_files.yaml +  vars: +    configmap_name: "logging-curator" +    configmap_namespace: "logging" +    configmap_file_names: +      - current_file: "config.yaml" +        new_file: "{{ tempdir }}/curator.yml"  - name: Set Curator configmap    oc_configmap: diff --git a/roles/openshift_logging_curator/vars/main.yml b/roles/openshift_logging_curator/vars/main.yml index 95bf462d1..5bee58725 100644 --- a/roles/openshift_logging_curator/vars/main.yml +++ b/roles/openshift_logging_curator/vars/main.yml @@ -1,3 +1,3 @@  --- -__latest_curator_version: "3_6" -__allowed_curator_versions: ["3_5", "3_6", "3_7"] +__latest_curator_version: "3_8" +__allowed_curator_versions: ["3_5", "3_6", "3_7", "3_8"] diff --git a/roles/openshift_logging_elasticsearch/tasks/main.yaml b/roles/openshift_logging_elasticsearch/tasks/main.yaml index 6ddeb122e..9e7646379 100644 --- a/roles/openshift_logging_elasticsearch/tasks/main.yaml +++ b/roles/openshift_logging_elasticsearch/tasks/main.yaml @@ -168,33 +168,31 @@    when: es_logging_contents is undefined    changed_when: no -- set_fact: -    __es_num_of_shards: "{{ _es_configmap | default({}) | walk('index.number_of_shards', '1') }}" -    __es_num_of_replicas: "{{ _es_configmap | default({}) | walk('index.number_of_replicas', '0') }}" -  - template:      src: elasticsearch.yml.j2      dest: "{{ tempdir }}/elasticsearch.yml"    vars:      allow_cluster_reader: "{{ openshift_logging_elasticsearch_ops_allow_cluster_reader | lower | default('false') }}" -    es_number_of_shards: "{{ openshift_logging_es_number_of_shards | default(None) or __es_num_of_shards }}" -    es_number_of_replicas: "{{ openshift_logging_es_number_of_replicas | default(None) or __es_num_of_replicas }}" +    es_number_of_shards: "{{ openshift_logging_es_number_of_shards | default(1) }}" +    es_number_of_replicas: "{{ openshift_logging_es_number_of_replicas| default(0) }}"      es_kibana_index_mode: "{{ openshift_logging_elasticsearch_kibana_index_mode | default('unique') }}"    when: es_config_contents is undefined    changed_when: no -- copy: -    content: "{{ es_logging_contents }}" -    dest: "{{ tempdir }}/elasticsearch-logging.yml" -  when: es_logging_contents is defined -  changed_when: no - -- copy: -    content: "{{ es_config_contents }}" -    dest: "{{ tempdir }}/elasticsearch.yml" -  when: es_config_contents is defined -  changed_when: no +# create diff between current configmap files and our current files +- include_role: +    name: openshift_logging +    tasks_from: patch_configmap_files.yaml +  vars: +    configmap_name: "logging-elasticsearch" +    configmap_namespace: "logging" +    configmap_file_names: +      - current_file: "elasticsearch.yml" +        new_file: "{{ tempdir }}/elasticsearch.yml" +        protected_lines: ["number_of_shards", "number_of_replicas"] +      - current_file: "logging.yml" +        new_file: "{{ tempdir }}/elasticsearch-logging.yml"  - name: Set ES configmap    oc_configmap: diff --git a/roles/openshift_logging_elasticsearch/vars/main.yml b/roles/openshift_logging_elasticsearch/vars/main.yml index c8e995146..0e56a6eac 100644 --- a/roles/openshift_logging_elasticsearch/vars/main.yml +++ b/roles/openshift_logging_elasticsearch/vars/main.yml @@ -1,6 +1,6 @@  --- -__latest_es_version: "3_6" -__allowed_es_versions: ["3_5", "3_6", "3_7"] +__latest_es_version: "3_8" +__allowed_es_versions: ["3_5", "3_6", "3_7", "3_8"]  __allowed_es_types: ["data-master", "data-client", "master", "client"]  __es_log_appenders: ['file', 'console']  __kibana_index_modes: ["unique", "shared_ops"] diff --git a/roles/openshift_logging_fluentd/tasks/main.yaml b/roles/openshift_logging_fluentd/tasks/main.yaml index 08d7561ac..486cfb8bc 100644 --- a/roles/openshift_logging_fluentd/tasks/main.yaml +++ b/roles/openshift_logging_fluentd/tasks/main.yaml @@ -108,38 +108,28 @@      dest: "{{ tempdir }}/fluent.conf"    vars:      deploy_type: "{{ openshift_logging_fluentd_deployment_type }}" -  when: fluentd_config_contents is undefined -  changed_when: no  - copy:      src: fluentd-throttle-config.yaml      dest: "{{ tempdir }}/fluentd-throttle-config.yaml" -  when: fluentd_throttle_contents is undefined -  changed_when: no  - copy:      src: secure-forward.conf      dest: "{{ tempdir }}/secure-forward.conf" -  when: fluentd_secureforward_contents is undefined -  changed_when: no - -- copy: -    content: "{{ fluentd_config_contents }}" -    dest: "{{ tempdir }}/fluent.conf" -  when: fluentd_config_contents is defined -  changed_when: no -- copy: -    content: "{{ fluentd_throttle_contents }}" -    dest: "{{ tempdir }}/fluentd-throttle-config.yaml" -  when: fluentd_throttle_contents is defined -  changed_when: no - -- copy: -    content: "{{ fluentd_secureforward_contents }}" -    dest: "{{ tempdir }}/secure-forward.conf" -  when: fluentd_secureforward_contents is defined -  changed_when: no +- include_role: +    name: openshift_logging +    tasks_from: patch_configmap_files.yaml +  vars: +    configmap_name: "logging-fluentd" +    configmap_namespace: "logging" +    configmap_file_names: +      - current_file: "fluent.conf" +        new_file: "{{ tempdir }}/fluent.conf" +      - current_file: "throttle-config.yaml" +        new_file: "{{ tempdir }}/fluentd-throttle-config.yaml" +      - current_file: "secure-forward.conf" +        new_file: "{{ tempdir }}/secure-forward.conf"  - name: Set Fluentd configmap    oc_configmap: diff --git a/roles/openshift_logging_fluentd/vars/main.yml b/roles/openshift_logging_fluentd/vars/main.yml index 92a426952..762e3d4d0 100644 --- a/roles/openshift_logging_fluentd/vars/main.yml +++ b/roles/openshift_logging_fluentd/vars/main.yml @@ -1,5 +1,5 @@  --- -__latest_fluentd_version: "3_6" -__allowed_fluentd_versions: ["3_5", "3_6", "3_7"] +__latest_fluentd_version: "3_8" +__allowed_fluentd_versions: ["3_5", "3_6", "3_7", "3_8"]  __allowed_fluentd_types: ["hosted", "secure-aggregator", "secure-host"]  __allowed_mux_client_modes: ["minimal", "maximal"] diff --git a/roles/openshift_logging_kibana/vars/main.yml b/roles/openshift_logging_kibana/vars/main.yml index 241877a02..a2c54d8e4 100644 --- a/roles/openshift_logging_kibana/vars/main.yml +++ b/roles/openshift_logging_kibana/vars/main.yml @@ -1,3 +1,3 @@  --- -__latest_kibana_version: "3_6" -__allowed_kibana_versions: ["3_5", "3_6", "3_7"] +__latest_kibana_version: "3_8" +__allowed_kibana_versions: ["3_5", "3_6", "3_7", "3_8"] diff --git a/roles/openshift_logging_mux/tasks/main.yaml b/roles/openshift_logging_mux/tasks/main.yaml index 59a6301d7..a281c6a53 100644 --- a/roles/openshift_logging_mux/tasks/main.yaml +++ b/roles/openshift_logging_mux/tasks/main.yaml @@ -88,26 +88,24 @@  - copy:      src: fluent.conf      dest: "{{mktemp.stdout}}/fluent-mux.conf" -  when: fluentd_mux_config_contents is undefined    changed_when: no  - copy:      src: secure-forward.conf      dest: "{{mktemp.stdout}}/secure-forward-mux.conf" -  when: fluentd_mux_securefoward_contents is undefined    changed_when: no -- copy: -    content: "{{fluentd_mux_config_contents}}" -    dest: "{{mktemp.stdout}}/fluent-mux.conf" -  when: fluentd_mux_config_contents is defined -  changed_when: no - -- copy: -    content: "{{fluentd_mux_secureforward_contents}}" -    dest: "{{mktemp.stdout}}/secure-forward-mux.conf" -  when: fluentd_mux_secureforward_contents is defined -  changed_when: no +- include_role: +    name: openshift_logging +    tasks_from: patch_configmap_files.yaml +  vars: +    configmap_name: "logging-mux" +    configmap_namespace: "{{ openshift_logging_mux_namespace }}" +    configmap_file_names: +      - current_file: "fluent.conf" +        new_file: "{{ tempdir }}/fluent-mux.conf" +      - current_file: "secure-forward.conf" +        new_file: "{{ tempdir }}/secure-forward-mux.conf"  - name: Set Mux configmap    oc_configmap: diff --git a/roles/openshift_logging_mux/vars/main.yml b/roles/openshift_logging_mux/vars/main.yml index e7b57f4b5..1da053b4a 100644 --- a/roles/openshift_logging_mux/vars/main.yml +++ b/roles/openshift_logging_mux/vars/main.yml @@ -1,3 +1,3 @@  --- -__latest_mux_version: "3_6" -__allowed_mux_versions: ["3_5", "3_6", "3_7"] +__latest_mux_version: "3_8" +__allowed_mux_versions: ["3_5", "3_6", "3_7", "3_8"] diff --git a/roles/openshift_master/defaults/main.yml b/roles/openshift_master/defaults/main.yml index 5d292ffd0..4030e1bfa 100644 --- a/roles/openshift_master/defaults/main.yml +++ b/roles/openshift_master/defaults/main.yml @@ -82,6 +82,15 @@ openshift_master_valid_grant_methods:  openshift_master_is_scaleup_host: False +# openshift_master_oauth_template is deprecated.  Should be added to deprecations +# and removed. +openshift_master_oauth_template: False +openshift_master_oauth_templates_default: +  login: "{{ openshift_master_oauth_template }}" +openshift_master_oauth_templates: "{{ openshift_master_oauth_template | ternary(openshift_master_oauth_templates_default, False) }}" +# Here we combine openshift_master_oath_template into 'login' key of openshift_master_oath_templates, if not present. +l_openshift_master_oauth_templates: "{{ openshift_master_oauth_templates | default(openshift_master_oauth_templates_default) }}" +  # These defaults assume forcing journald persistence, fsync to disk once  # a second, rate-limiting to 10,000 logs a second, no forwarding to  # syslog or wall, using 8GB of disk space maximum, using 10MB journal diff --git a/roles/openshift_master/templates/master.yaml.v1.j2 b/roles/openshift_master/templates/master.yaml.v1.j2 index c224ad714..14023ea73 100644 --- a/roles/openshift_master/templates/master.yaml.v1.j2 +++ b/roles/openshift_master/templates/master.yaml.v1.j2 @@ -152,8 +152,8 @@ oauthConfig:  {% if 'oauth_always_show_provider_selection' in openshift.master %}    alwaysShowProviderSelection: {{ openshift.master.oauth_always_show_provider_selection }}  {% endif %} -{% if 'oauth_templates' in openshift.master %} -  templates:{{ openshift.master.oauth_templates | lib_utils_to_padded_yaml(level=2) }} +{% if l_openshift_master_oauth_templates %} +  templates:{{ l_openshift_master_oauth_templates | lib_utils_to_padded_yaml(level=2) }}  {% endif %}    assetPublicURL: {{ openshift.master.public_console_url }}/    grantConfig: diff --git a/roles/openshift_master_facts/tasks/main.yml b/roles/openshift_master_facts/tasks/main.yml index ad9a21c96..85d0ac25c 100644 --- a/roles/openshift_master_facts/tasks/main.yml +++ b/roles/openshift_master_facts/tasks/main.yml @@ -74,8 +74,6 @@        master_count: "{{ openshift_master_count | default(None) }}"        admission_plugin_config: "{{openshift_master_admission_plugin_config }}"        kube_admission_plugin_config: "{{openshift_master_kube_admission_plugin_config | default(None) }}"  # deprecated, merged with admission_plugin_config -      oauth_template: "{{ openshift_master_oauth_template | default(None) }}"  # deprecated in origin 1.2 / OSE 3.2 -      oauth_templates: "{{ openshift_master_oauth_templates | default(None) }}"        oauth_always_show_provider_selection: "{{ openshift_master_oauth_always_show_provider_selection | default(None) }}"        image_policy_config: "{{ openshift_master_image_policy_config | default(None) }}"        dynamic_provisioning_enabled: "{{ openshift_master_dynamic_provisioning_enabled | default(None) }}" diff --git a/roles/openshift_node/defaults/main.yml b/roles/openshift_node/defaults/main.yml index a90aad532..5eb9cef15 100644 --- a/roles/openshift_node/defaults/main.yml +++ b/roles/openshift_node/defaults/main.yml @@ -34,19 +34,19 @@ openshift_node_kubelet_args_dict:      cloud-provider:      - aws      cloud-config: -    - "{{ openshift_config_base ~ '/aws.conf' }}" +    - "{{ openshift_config_base ~ '/cloudprovider/aws.conf' }}"      node-labels: "{{ l_node_kubelet_node_labels }}"    openstack:      cloud-provider:      - openstack      cloud-config: -    - "{{ openshift_config_base ~ '/openstack.conf' }}" +    - "{{ openshift_config_base ~ '/cloudprovider/openstack.conf' }}"      node-labels: "{{ l_node_kubelet_node_labels }}"    gce:      cloud-provider:      - gce      cloud-config: -    - "{{ openshift_config_base ~ '/gce.conf' }}" +    - "{{ openshift_config_base ~ '/cloudprovider/gce.conf' }}"      node-labels: "{{ l_node_kubelet_node_labels }}"    undefined:      node-labels: "{{ l_node_kubelet_node_labels }}" diff --git a/roles/openshift_node/tasks/main.yml b/roles/openshift_node/tasks/main.yml index eb362816a..103572291 100644 --- a/roles/openshift_node/tasks/main.yml +++ b/roles/openshift_node/tasks/main.yml @@ -99,7 +99,3 @@  - include_tasks: config/workaround-bz1331590-ovs-oom-fix.yml    when: openshift_node_use_openshift_sdn | default(true) | bool - -- name: include bootstrap node config -  include_tasks: bootstrap.yml -  when: openshift_node_bootstrap diff --git a/roles/openshift_sanitize_inventory/meta/main.yml b/roles/openshift_sanitize_inventory/meta/main.yml index 324ba06d8..cde3eccb6 100644 --- a/roles/openshift_sanitize_inventory/meta/main.yml +++ b/roles/openshift_sanitize_inventory/meta/main.yml @@ -14,3 +14,4 @@ galaxy_info:    - system  dependencies:  - role: lib_utils +- role: lib_openshift  | 
