diff options
| author | Scott Dodson <sdodson@redhat.com> | 2018-01-23 13:18:32 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-01-23 13:18:32 -0500 | 
| commit | 1c9c43e886500f53e23b2ab58b67b4a271e140ac (patch) | |
| tree | 7223e8dd9befbb29d2915d1f50c7c970f31cccf4 | |
| parent | 1dc60bb8a49afaf2e6efcf9a3740f1f112671872 (diff) | |
| parent | e18a06d2a14c5933243773f0aca7a891177f3e40 (diff) | |
| download | openshift-1c9c43e886500f53e23b2ab58b67b4a271e140ac.tar.gz openshift-1c9c43e886500f53e23b2ab58b67b4a271e140ac.tar.bz2 openshift-1c9c43e886500f53e23b2ab58b67b4a271e140ac.tar.xz openshift-1c9c43e886500f53e23b2ab58b67b4a271e140ac.zip | |
Merge pull request #6783 from mgugino-upstream-stage/node-syscon-add-mounts
Add ability to mount volumes into system container nodes
| -rw-r--r-- | roles/lib_utils/filter_plugins/oo_filters.py | 14 | ||||
| -rw-r--r-- | roles/openshift_node/defaults/main.yml | 12 | ||||
| -rw-r--r-- | roles/openshift_node/tasks/node_system_container.yml | 19 | 
3 files changed, 45 insertions, 0 deletions
| diff --git a/roles/lib_utils/filter_plugins/oo_filters.py b/roles/lib_utils/filter_plugins/oo_filters.py index 9f73510c4..ef996fefe 100644 --- a/roles/lib_utils/filter_plugins/oo_filters.py +++ b/roles/lib_utils/filter_plugins/oo_filters.py @@ -4,6 +4,7 @@  """  Custom filters for use in openshift-ansible  """ +import json  import os  import pdb  import random @@ -586,6 +587,18 @@ that result to this filter plugin.      return secret_name +def lib_utils_oo_l_of_d_to_csv(input_list): +    """Map a list of dictionaries, input_list, into a csv string +    of json values. + +    Example input: +    [{'var1': 'val1', 'var2': 'val2'}, {'var1': 'val3', 'var2': 'val4'}] +    Example output: +    u'{"var1": "val1", "var2": "val2"},{"var1": "val3", "var2": "val4"}' +    """ +    return ','.join(json.dumps(x) for x in input_list) + +  def map_from_pairs(source, delim="="):      ''' Returns a dict given the source and delim delimited '''      if source == '': @@ -623,5 +636,6 @@ class FilterModule(object):              "lib_utils_oo_contains_rule": lib_utils_oo_contains_rule,              "lib_utils_oo_selector_to_string_list": lib_utils_oo_selector_to_string_list,              "lib_utils_oo_filter_sa_secrets": lib_utils_oo_filter_sa_secrets, +            "lib_utils_oo_l_of_d_to_csv": lib_utils_oo_l_of_d_to_csv,              "map_from_pairs": map_from_pairs          } diff --git a/roles/openshift_node/defaults/main.yml b/roles/openshift_node/defaults/main.yml index 0b10413c5..5864d3c03 100644 --- a/roles/openshift_node/defaults/main.yml +++ b/roles/openshift_node/defaults/main.yml @@ -77,6 +77,18 @@ r_openshift_node_use_firewalld: "{{ os_firewall_use_firewalld | default(False) }  l_is_node_system_container: "{{ (openshift_use_node_system_container | default(openshift_use_system_containers | default(false)) | bool) }}" +openshift_node_syscon_auth_mounts_l: +- type: bind +  source: "{{ oreg_auth_credentials_path }}" +  destination: "/root/.docker" +  options: +  - ro + +# If we need to add new mounts in the future, or the user wants to mount data. +# This should be in the same format as auth_mounts_l above. +openshift_node_syscon_add_mounts_l: [] + +  openshift_deployment_type: "{{ openshift_deployment_type | default('origin') }}"  openshift_node_image_dict: diff --git a/roles/openshift_node/tasks/node_system_container.yml b/roles/openshift_node/tasks/node_system_container.yml index 06b879050..008f209d7 100644 --- a/roles/openshift_node/tasks/node_system_container.yml +++ b/roles/openshift_node/tasks/node_system_container.yml @@ -14,4 +14,23 @@      - "DNS_DOMAIN={{ openshift.common.dns_domain }}"      - "DOCKER_SERVICE={{ openshift_docker_service_name }}.service"      - "MASTER_SERVICE={{ openshift_service_type }}.service" +    - 'ADDTL_MOUNTS={{ l_node_syscon_add_mounts2 }}'      state: latest +  vars: +    # We need to evaluate some variables here to ensure +    # l_bind_docker_reg_auth is evaluated after registry_auth.yml has been +    # processed. + +    # Determine if we want to include auth credentials mount. +    l_node_syscon_auth_mounts_l: "{{ l_bind_docker_reg_auth | ternary(openshift_node_syscon_auth_mounts_l,[]) }}" + +    # Join any user-provided mounts and auth_mounts into a combined list. +    l_node_syscon_add_mounts_l: "{{ openshift_node_syscon_add_mounts_l | union(l_node_syscon_auth_mounts_l) }}" + +    # We must prepend a ',' here to ensure the value is inserted properly into an +    # existing json list in the container's config.json +    # lib_utils_oo_l_of_d_to_csv is a custom filter plugin in roles/lib_utils/oo_filters.py +    l_node_syscon_add_mounts: ",{{ l_node_syscon_add_mounts_l | lib_utils_oo_l_of_d_to_csv }}" +    # if we have just a ',' then both mount lists were empty, we don't want to add +    # anything to config.json +    l_node_syscon_add_mounts2: "{{ (l_node_syscon_add_mounts != ',') | bool | ternary(l_node_syscon_add_mounts,'') }}" | 
