diff options
Diffstat (limited to 'roles/docker')
| -rw-r--r-- | roles/docker/defaults/main.yml | 12 | ||||
| -rw-r--r-- | roles/docker/meta/main.yml | 1 | ||||
| -rw-r--r-- | roles/docker/tasks/crio_firewall.yml | 40 | ||||
| -rw-r--r-- | roles/docker/tasks/main.yml | 11 | ||||
| -rw-r--r-- | roles/docker/tasks/package_docker.yml | 21 | ||||
| -rw-r--r-- | roles/docker/tasks/registry_auth.yml | 16 | ||||
| -rw-r--r-- | roles/docker/tasks/systemcontainer_crio.yml | 52 | ||||
| -rw-r--r-- | roles/docker/tasks/systemcontainer_docker.yml | 38 | ||||
| -rw-r--r-- | roles/docker/templates/crio.conf.j2 | 2 | 
9 files changed, 105 insertions, 88 deletions
diff --git a/roles/docker/defaults/main.yml b/roles/docker/defaults/main.yml index 1c830cb4e..f6f2bd77e 100644 --- a/roles/docker/defaults/main.yml +++ b/roles/docker/defaults/main.yml @@ -20,4 +20,16 @@ l2_docker_additional_registries: "{% if openshift_docker_additional_registries i  l2_docker_blocked_registries: "{% if openshift_docker_blocked_registries is string %}{% if openshift_docker_blocked_registries == '' %}[]{% elif ',' in openshift_docker_blocked_registries %}{{ openshift_docker_blocked_registries.split(',') | list }}{% else %}{{ [ openshift_docker_blocked_registries ] }}{% endif %}{% else %}{{ openshift_docker_blocked_registries }}{% endif %}"  l2_docker_insecure_registries: "{% if openshift_docker_insecure_registries is string %}{% if openshift_docker_insecure_registries == '' %}[]{% elif ',' in openshift_docker_insecure_registries %}{{ openshift_docker_insecure_registries.split(',') | list }}{% else %}{{ [ openshift_docker_insecure_registries ] }}{% endif %}{% else %}{{ openshift_docker_insecure_registries }}{% endif %}" +openshift_docker_use_etc_containers: False  containers_registries_conf_path: /etc/containers/registries.conf + +r_crio_firewall_enabled: "{{ os_firewall_enabled | default(True) }}" +r_crio_use_firewalld: "{{ os_firewall_use_firewalld | default(False) }}" + +r_crio_os_firewall_deny: [] +r_crio_os_firewall_allow: +- service: crio +  port: 10010/tcp + + +openshift_docker_is_node_or_master: "{{ True if inventory_hostname in (groups['oo_masters_to_config']|default([])) or inventory_hostname in (groups['oo_nodes_to_config']|default([])) else False | bool }}" diff --git a/roles/docker/meta/main.yml b/roles/docker/meta/main.yml index b773a417c..62b8a2eb5 100644 --- a/roles/docker/meta/main.yml +++ b/roles/docker/meta/main.yml @@ -11,3 +11,4 @@ galaxy_info:      - 7  dependencies:  - role: lib_openshift +- role: lib_os_firewall diff --git a/roles/docker/tasks/crio_firewall.yml b/roles/docker/tasks/crio_firewall.yml new file mode 100644 index 000000000..fbd1ff515 --- /dev/null +++ b/roles/docker/tasks/crio_firewall.yml @@ -0,0 +1,40 @@ +--- +- when: r_crio_firewall_enabled | bool and not r_crio_use_firewalld | bool +  block: +  - name: Add iptables allow rules +    os_firewall_manage_iptables: +      name: "{{ item.service }}" +      action: add +      protocol: "{{ item.port.split('/')[1] }}" +      port: "{{ item.port.split('/')[0] }}" +    when: item.cond | default(True) +    with_items: "{{ r_crio_os_firewall_allow }}" + +  - name: Remove iptables rules +    os_firewall_manage_iptables: +      name: "{{ item.service }}" +      action: remove +      protocol: "{{ item.port.split('/')[1] }}" +      port: "{{ item.port.split('/')[0] }}" +    when: item.cond | default(True) +    with_items: "{{ r_crio_os_firewall_deny }}" + +- when: r_crio_firewall_enabled | bool and r_crio_use_firewalld | bool +  block: +  - name: Add firewalld allow rules +    firewalld: +      port: "{{ item.port }}" +      permanent: true +      immediate: true +      state: enabled +    when: item.cond | default(True) +    with_items: "{{ r_crio_os_firewall_allow }}" + +  - name: Remove firewalld allow rules +    firewalld: +      port: "{{ item.port }}" +      permanent: true +      immediate: true +      state: disabled +    when: item.cond | default(True) +    with_items: "{{ r_crio_os_firewall_deny }}" diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index f73f90686..1539af53f 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -10,6 +10,15 @@      l_use_crio: "{{ openshift_use_crio | default(False) }}"      l_use_crio_only: "{{ openshift_use_crio_only | default(False) }}" +- name: Add enterprise registry, if necessary +  set_fact: +    l2_docker_additional_registries: "{{ l2_docker_additional_registries + [openshift_docker_ent_reg] }}" +  when: +    - openshift.common.deployment_type == 'openshift-enterprise' +    - openshift_docker_ent_reg != '' +    - openshift_docker_ent_reg not in l2_docker_additional_registries +    - not l_use_crio_only +  - name: Use Package Docker if Requested    include: package_docker.yml    when: @@ -26,4 +35,4 @@    include: systemcontainer_crio.yml    when:      - l_use_crio -    - inventory_hostname in groups['oo_masters_to_config'] or inventory_hostname in groups['oo_nodes_to_config'] +    - openshift_docker_is_node_or_master | bool diff --git a/roles/docker/tasks/package_docker.yml b/roles/docker/tasks/package_docker.yml index 7ccab37a5..c1aedf879 100644 --- a/roles/docker/tasks/package_docker.yml +++ b/roles/docker/tasks/package_docker.yml @@ -52,14 +52,6 @@      - restart docker    when: not (os_firewall_use_firewalld | default(False)) | bool -- name: Add enterprise registry, if necessary -  set_fact: -    l2_docker_additional_registries: "{{ l2_docker_additional_registries + [openshift_docker_ent_reg] }}" -  when: -  - openshift.common.deployment_type == 'openshift-enterprise' -  - openshift_docker_ent_reg != '' -  - openshift_docker_ent_reg not in l2_docker_additional_registries -  - stat: path=/etc/sysconfig/docker    register: docker_check @@ -89,6 +81,7 @@    template:      dest: "{{ containers_registries_conf_path }}"      src: registries.conf +  when: openshift_docker_use_etc_containers | bool    notify:    - restart docker @@ -161,16 +154,6 @@  - set_fact:      docker_service_status_changed: "{{ (r_docker_package_docker_start_result | changed) and (r_docker_already_running_result.stdout != 'ActiveState=active' ) }}" -- name: Check for credentials file for registry auth -  stat: -    path: "{{ docker_cli_auth_config_path }}/config.json" -  when: oreg_auth_user is defined -  register: docker_cli_auth_credentials_stat - -- name: Create credentials for docker cli registry auth -  command: "docker --config={{ docker_cli_auth_config_path }} login -u {{ oreg_auth_user }} -p {{ oreg_auth_password }} {{ oreg_host }}" -  when: -  - oreg_auth_user is defined -  - (not docker_cli_auth_credentials_stat.stat.exists or oreg_auth_credentials_replace) | bool +- include: registry_auth.yml  - meta: flush_handlers diff --git a/roles/docker/tasks/registry_auth.yml b/roles/docker/tasks/registry_auth.yml new file mode 100644 index 000000000..d05b7f2b8 --- /dev/null +++ b/roles/docker/tasks/registry_auth.yml @@ -0,0 +1,16 @@ +--- +- name: Check for credentials file for registry auth +  stat: +    path: "{{ docker_cli_auth_config_path }}/config.json" +  when: oreg_auth_user is defined +  register: docker_cli_auth_credentials_stat + +- name: Create credentials for docker cli registry auth +  command: "docker --config={{ docker_cli_auth_config_path }} login -u {{ oreg_auth_user }} -p {{ oreg_auth_password }} {{ oreg_host }}" +  register: openshift_docker_credentials_create_res +  retries: 3 +  delay: 5 +  until: openshift_docker_credentials_create_res.rc == 0 +  when: +  - oreg_auth_user is defined +  - (not docker_cli_auth_credentials_stat.stat.exists or oreg_auth_credentials_replace) | bool diff --git a/roles/docker/tasks/systemcontainer_crio.yml b/roles/docker/tasks/systemcontainer_crio.yml index a79600930..67ede0d21 100644 --- a/roles/docker/tasks/systemcontainer_crio.yml +++ b/roles/docker/tasks/systemcontainer_crio.yml @@ -3,16 +3,16 @@  # TODO: Much of this file is shared with container engine tasks  - set_fact:      l_insecure_crio_registries: "{{ '\"{}\"'.format('\", \"'.join(l2_docker_insecure_registries)) }}" -  when: l2_docker_insecure_registries +  when: l2_docker_insecure_registries | bool  - set_fact:      l_crio_registries: "{{ l2_docker_additional_registries + ['docker.io'] }}" -  when: l2_docker_additional_registries +  when: l2_docker_additional_registries | bool  - set_fact:      l_crio_registries: "{{ ['docker.io'] }}" -  when: not l2_docker_additional_registries +  when: not (l2_docker_additional_registries | bool)  - set_fact:      l_additional_crio_registries: "{{ '\"{}\"'.format('\", \"'.join(l_crio_registries)) }}" -  when: l2_docker_additional_registries +  when: l2_docker_additional_registries | bool  - set_fact:      l_openshift_image_tag: "{{ openshift_image_tag | string }}" @@ -62,7 +62,7 @@    shell: lsmod | grep overlay    register: l_has_overlay_in_kernel    ignore_errors: yes - +  failed_when: false  - when: l_has_overlay_in_kernel.rc != 0    block: @@ -82,36 +82,10 @@          enabled: yes          state: restarted - -- block: - -    - name: Add http_proxy to /etc/atomic.conf -      lineinfile: -        dest: /etc/atomic.conf -        regexp: "^#?http_proxy[:=]{1}" -        line: "http_proxy: {{ openshift.common.http_proxy | default('') }}" -      when: -        - openshift.common.http_proxy is defined -        - openshift.common.http_proxy != '' - -    - name: Add https_proxy to /etc/atomic.conf -      lineinfile: -        dest: /etc/atomic.conf -        regexp: "^#?https_proxy[:=]{1}" -        line: "https_proxy: {{ openshift.common.https_proxy | default('') }}" -      when: -        - openshift.common.https_proxy is defined -        - openshift.common.https_proxy != '' - -    - name: Add no_proxy to /etc/atomic.conf -      lineinfile: -        dest: /etc/atomic.conf -        regexp: "^#?no_proxy[:=]{1}" -        line: "no_proxy: {{ openshift.common.no_proxy | default('') }}" -      when: -        - openshift.common.no_proxy is defined -        - openshift.common.no_proxy != '' - +- name: Ensure proxies are in the atomic.conf +  include_role: +    name: openshift_atomic +    tasks_from: proxy  - block: @@ -187,11 +161,19 @@      path: /etc/cni/net.d/      state: directory +- name: setup firewall for CRI-O +  include: crio_firewall.yml +  static: yes +  - name: Configure the CNI network    template:      dest: /etc/cni/net.d/openshift-sdn.conf      src: 80-openshift-sdn.conf.j2 +- name: Fix SELinux Permissions on /var/lib/containers +  command: "restorecon -R /var/lib/containers/" +  changed_when: false +  - name: Start the CRI-O service    systemd:      name: "cri-o" diff --git a/roles/docker/tasks/systemcontainer_docker.yml b/roles/docker/tasks/systemcontainer_docker.yml index 15c6a55db..aa3b35ddd 100644 --- a/roles/docker/tasks/systemcontainer_docker.yml +++ b/roles/docker/tasks/systemcontainer_docker.yml @@ -68,38 +68,10 @@    retries: 3    delay: 30 - -# Set http_proxy, https_proxy, and no_proxy in /etc/atomic.conf -# regexp: the line starts with or without #, followed by the string -#         http_proxy, then either : or = -- block: - -    - name: Add http_proxy to /etc/atomic.conf -      lineinfile: -        dest: /etc/atomic.conf -        regexp: "^#?http_proxy[:=]{1}" -        line: "http_proxy: {{ openshift.common.http_proxy | default('') }}" -      when: -        - openshift.common.http_proxy is defined -        - openshift.common.http_proxy != '' - -    - name: Add https_proxy to /etc/atomic.conf -      lineinfile: -        dest: /etc/atomic.conf -        regexp: "^#?https_proxy[:=]{1}" -        line: "https_proxy: {{ openshift.common.https_proxy | default('') }}" -      when: -        - openshift.common.https_proxy is defined -        - openshift.common.https_proxy != '' - -    - name: Add no_proxy to /etc/atomic.conf -      lineinfile: -        dest: /etc/atomic.conf -        regexp: "^#?no_proxy[:=]{1}" -        line: "no_proxy: {{ openshift.common.no_proxy | default('') }}" -      when: -        - openshift.common.no_proxy is defined -        - openshift.common.no_proxy != '' +- name: Ensure proxies are in the atomic.conf +  include_role: +    name: openshift_atomic +    tasks_from: proxy  - block: @@ -201,4 +173,6 @@  - set_fact:      docker_service_status_changed: "{{ r_docker_systemcontainer_docker_start_result | changed }}" +- include: registry_auth.yml +  - meta: flush_handlers diff --git a/roles/docker/templates/crio.conf.j2 b/roles/docker/templates/crio.conf.j2 index b715c2ffa..93014a80d 100644 --- a/roles/docker/templates/crio.conf.j2 +++ b/roles/docker/templates/crio.conf.j2 @@ -108,7 +108,7 @@ pids_limit = 1024  # log_size_max is the max limit for the container log size in bytes.  # Negative values indicate that no limit is imposed. -log_size_max = -1 +log_size_max = 52428800  # The "crio.image" table contains settings pertaining to the  # management of OCI images.  | 
