Browse Source

Merge pull request #6316 from giuseppe/fix-syscontainers-installation

syscontainers: fix CRI-O and container-engine installation
Scott Dodson 7 years ago
parent
commit
8b484281b6

+ 8 - 0
filter_plugins/oo_filters.py

@@ -375,6 +375,13 @@ def oo_split(string, separator=','):
     return string.split(separator)
 
 
+def oo_list_to_dict(lst, separator='='):
+    """ This converts a list of ["k=v"] to a dictionary {k: v}.
+    """
+    kvs = [i.split(separator) for i in lst]
+    return {k: v for k, v in kvs}
+
+
 def oo_haproxy_backend_masters(hosts, port):
     """ This takes an array of dicts and returns an array of dicts
         to be used as a backend for the haproxy role
@@ -969,6 +976,7 @@ class FilterModule(object):
             "oo_combine_dict": oo_combine_dict,
             "oo_dict_to_list_of_dict": oo_dict_to_list_of_dict,
             "oo_split": oo_split,
+            "oo_list_to_dict": oo_list_to_dict,
             "oo_filter_list": oo_filter_list,
             "oo_parse_heat_stack_outputs": oo_parse_heat_stack_outputs,
             "oo_parse_named_certificates": oo_parse_named_certificates,

+ 4 - 0
roles/container_runtime/defaults/main.yml

@@ -59,6 +59,7 @@ docker_default_storage_path: /var/lib/docker
 # Set local versions of facts that must be in json format for container-daemon.json
 # NOTE: When jinja2.9+ is used the container-daemon.json file can move to using tojson
 l_docker_log_options: "{{ l2_docker_log_options | to_json }}"
+l_docker_log_options_dict: "{{ l2_docker_log_options | oo_list_to_dict | to_json }}"
 l_docker_additional_registries: "{{ l2_docker_additional_registries | to_json }}"
 l_docker_blocked_registries: "{{ l2_docker_blocked_registries | to_json }}"
 l_docker_insecure_registries: "{{ l2_docker_insecure_registries | to_json }}"
@@ -81,6 +82,7 @@ l_insecure_crio_registries: "{{ '\"{}\"'.format('\", \"'.join(l2_docker_insecure
 l_crio_registries: "{{ l2_docker_additional_registries + ['docker.io'] }}"
 l_additional_crio_registries: "{{ '\"{}\"'.format('\", \"'.join(l_crio_registries)) }}"
 
+
 openshift_crio_image_tag_default: "latest"
 
 l_crt_crio_image_tag_dict:
@@ -127,3 +129,5 @@ l_docker_image_tag: "{{ l_crt_docker_image_tag_dict[openshift_deployment_type] }
 
 l_docker_image_default: "{{ l_docker_image_prepend }}/{{ openshift_docker_service_name }}:{{ l_docker_image_tag }}"
 l_docker_image: "{{ openshift_docker_systemcontainer_image_override | default(l_docker_image_default) }}"
+
+l_is_node_system_container: "{{ (openshift_use_node_system_container | default(openshift_use_system_containers | default(false)) | bool) }}"

+ 1 - 1
roles/container_runtime/tasks/systemcontainer_crio.yml

@@ -4,7 +4,7 @@
   fail: msg='Cannot use CRI-O with node configured as a Docker container'
   when:
     - openshift.common.is_containerized | bool
-    - not openshift.common.is_node_system_container | bool
+    - not l_is_node_system_container | bool
 
 - include_tasks: common/pre.yml
 

+ 2 - 2
roles/container_runtime/templates/daemon.json

@@ -5,10 +5,10 @@
     "disable-legacy-registry": false,
     "exec-opts": ["native.cgroupdriver=systemd"],
     "insecure-registries": {{ l_docker_insecure_registries }},
-{% if openshift_docker_log_driver is defined  %}
+{% if openshift_docker_log_driver  %}
     "log-driver": "{{ openshift_docker_log_driver }}",
 {%- endif %}
-    "log-opts": {{ l_docker_log_options }},
+    "log-opts": {{ l_docker_log_options_dict }},
     "runtimes": {
 	"oci": {
 	    "path": "/usr/libexec/docker/docker-runc-current"

+ 9 - 0
roles/openshift_node/tasks/main.yml

@@ -44,6 +44,15 @@
 - name: include node installer
   include_tasks: install.yml
 
+- name: Restart cri-o
+  systemd:
+    name: cri-o
+    enabled: yes
+    state: restarted
+  when: openshift_use_crio
+  register: task_result
+  failed_when: task_result|failed and 'could not find the requested service' not in task_result.msg|lower
+
 - name: restart NetworkManager to ensure resolv.conf is present
   systemd:
     name: NetworkManager

+ 2 - 0
roles/openshift_version/defaults/main.yml

@@ -6,3 +6,5 @@ openshift_service_type_dict:
   openshift-enterprise: atomic-openshift
 
 openshift_service_type: "{{ openshift_service_type_dict[openshift_deployment_type] }}"
+
+openshift_use_crio_only: False

+ 2 - 0
roles/openshift_version/meta/main.yml

@@ -13,3 +13,5 @@ galaxy_info:
   - cloud
 dependencies:
 - role: lib_utils
+- role: container_runtime
+- role: openshift_facts