diff --git a/roles/ensure-docker/tasks/docker-upstream.yaml b/roles/ensure-docker/tasks/docker-upstream.yaml index 3e9f887b9..f7420521e 100644 --- a/roles/ensure-docker/tasks/docker-upstream.yaml +++ b/roles/ensure-docker/tasks/docker-upstream.yaml @@ -18,6 +18,18 @@ repositories_keys: "{{ _docker_keys }}" repositories_list: "{{ _docker_repos }}" + # Workaround for docker-ce installation failure due conflict with containerd.io + # https://bugzilla.redhat.com/show_bug.cgi?id=1756473#c1 + - name: Patch docker-ce.repo for newer RedHat distros + when: ansible_os_family == 'RedHat' and ansible_distribution_major_version == '8' + ini_file: + path: /etc/yum.repos.d/docker-ce.repo + section: docker-ce-stable + option: module_hotfixes + value: "True" + no_extra_spaces: true + create: false + - name: Install pre-reqs package: name: "{{ _docker_upstream_distro_required_packages }}" @@ -29,23 +41,10 @@ state: absent when: docker_upstream_distro_remove_packages - # package/dnf module do not support `--nobest` option which is needed for - # installing docker-ce on centos-8 - name: Install upstream docker using package - when: not (ansible_os_family == 'RedHat' and ansible_distribution_major_version == '8') package: name: "{{ docker_upstream_distro_packages }}" state: present notify: Restart docker - - name: Install upstream docker using shell - when: ansible_os_family == 'RedHat' and ansible_distribution_major_version == '8' - shell: - cmd: | - dnf install --nobest -y {{ docker_upstream_distro_packages | join(' ') }} - warn: false - register: result - changed_when: "'Complete!' in result.stdout" - notify: Restart docker - - include_tasks: docker-setup.yaml diff --git a/roles/ensure-docker/vars/redhat.yaml b/roles/ensure-docker/vars/redhat.yaml index 9c1547568..e8b54533f 100644 --- a/roles/ensure-docker/vars/redhat.yaml +++ b/roles/ensure-docker/vars/redhat.yaml @@ -33,7 +33,10 @@ _docker_keys: _docker_repos: # TODO(mordred) We should add a proxy cache mirror for this + # Keep 'name' (section) and 'file' in sync with https://download.docker.com/linux/centos/docker-ce.repo + # to avoid breaking tools that assume standard repository install. - name: docker-ce-stable + file: docker-ce description: Docker CE Stable - $basearch baseurl: "{{ docker_mirror_base_url }}/7/$basearch/stable" gpgcheck: yes diff --git a/roles/ensure-package-repositories/tasks/RedHat.yaml b/roles/ensure-package-repositories/tasks/RedHat.yaml index 3e8c5d9d1..790d179ab 100644 --- a/roles/ensure-package-repositories/tasks/RedHat.yaml +++ b/roles/ensure-package-repositories/tasks/RedHat.yaml @@ -32,6 +32,7 @@ - name: Add repositories yum_repository: name: "{{ zj_item['name'] }}" + file: "{{ zj_item['file'] | default(zj_item['name']) }}" description: "{{ zj_item['description'] | default(omit) }}" baseurl: "{{ zj_item['baseurl'] | default(omit) }}" gpgcheck: "{{ zj_item['gpgcheck'] | default(omit) }}"