docker2podman: pull images from docker daemon

The docker2podman playbook only installs the podman package and updates
the systemd units with the right container_binary value.

We never pull the container image so if one service is restarted then
the container image will be pulled first before the service can start
which could cause longer downstream.

To avoid to download the container image from internet again we can just
pull it from the local docker daemon.

The container_{binding,package,service}_name variables are removed
because they are only used in the ceph-container-engine role which
isn't call in this playbook.

Signed-off-by: Dimitri Savineau <dsavinea@redhat.com>
(cherry picked from commit d38f21aeba)
pull/5368/head
Dimitri Savineau 2020-04-16 11:30:11 -04:00 committed by Dimitri Savineau
parent 94a71258a8
commit 0114457e13
2 changed files with 28 additions and 11 deletions

View File

@ -46,8 +46,9 @@
- "{{ mgr_group_name | default('mgrs') }}" - "{{ mgr_group_name | default('mgrs') }}"
- "{{ iscsi_gw_group_name | default('iscsigws') }}" - "{{ iscsi_gw_group_name | default('iscsigws') }}"
- "{{ rbdmirror_group_name | default('rbdmirrors') }}" - "{{ rbdmirror_group_name | default('rbdmirrors') }}"
gather_facts: false
become: true become: true
pre_tasks: tasks:
- import_role: - import_role:
name: ceph-defaults name: ceph-defaults
- import_role: - import_role:
@ -55,15 +56,10 @@
- import_role: - import_role:
name: ceph-handler name: ceph-handler
- name: set_fact docker2podman and container_binary
tasks:
- name: set_fact container_binary, container_binding_name, container_service_name, container_package_name
set_fact: set_fact:
docker2podman: True docker2podman: True
container_binary: podman container_binary: podman
container_binding_name: podman
container_service_name: podman
container_package_name: podman
- name: install podman - name: install podman
package: package:
@ -71,10 +67,25 @@
state: present state: present
register: result register: result
until: result is succeeded until: result is succeeded
tags: tags: with_pkg
- with_pkg
when: not is_atomic | bool when: not is_atomic | bool
- name: "pulling {{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }} image from docker daemon"
command: "{{ timeout_command }} {{ container_binary }} pull docker-daemon:{{ ceph_docker_registry }}/{{ ceph_docker_image }}:{{ ceph_docker_image_tag }}"
changed_when: false
register: pull_image
until: pull_image.rc == 0
retries: "{{ docker_pull_retry }}"
delay: 10
when: inventory_hostname in groups.get(mon_group_name, []) or
inventory_hostname in groups.get(osd_group_name, []) or
inventory_hostname in groups.get(mds_group_name, []) or
inventory_hostname in groups.get(rgw_group_name, []) or
inventory_hostname in groups.get(mgr_group_name, []) or
inventory_hostname in groups.get(rbdmirror_group_name, []) or
inventory_hostname in groups.get(iscsi_gw_group_name, []) or
inventory_hostname in groups.get(nfs_group_name, [])
- import_role: - import_role:
name: ceph-mon name: ceph-mon
tasks_from: systemd.yml tasks_from: systemd.yml
@ -120,6 +131,6 @@
tasks_from: systemd.yml tasks_from: systemd.yml
when: inventory_hostname in groups.get(rgw_group_name, []) when: inventory_hostname in groups.get(rgw_group_name, [])
- name: reload ceph monitor systemd unit - name: reload systemd daemon
systemd: systemd:
daemon_reload: yes daemon_reload: yes

View File

@ -45,7 +45,13 @@ commands=
ceph_docker_image_tag={env:CEPH_DOCKER_IMAGE_TAG:latest-octopus} \ ceph_docker_image_tag={env:CEPH_DOCKER_IMAGE_TAG:latest-octopus} \
" "
ansible-playbook -vv -i {changedir}/hosts {toxinidir}/infrastructure-playbooks/docker-to-podman.yml ansible-playbook -vv -i {changedir}/hosts {toxinidir}/infrastructure-playbooks/docker-to-podman.yml --extra-vars "\
delegate_facts_host={env:DELEGATE_FACTS_HOST:True} \
fetch_directory={env:FETCH_DIRECTORY:{changedir}/fetch} \
ceph_docker_registry={env:CEPH_DOCKER_REGISTRY:docker.io} \
ceph_docker_image={env:CEPH_DOCKER_IMAGE:ceph/daemon} \
ceph_docker_image_tag={env:CEPH_DOCKER_IMAGE_TAG:latest-octopus} \
"
py.test --reruns 5 --reruns-delay 1 -n 8 --durations=0 --sudo -v --connection=ansible --ansible-inventory={changedir}/hosts --ssh-config={changedir}/vagrant_ssh_config {toxinidir}/tests/functional/tests py.test --reruns 5 --reruns-delay 1 -n 8 --durations=0 --sudo -v --connection=ansible --ansible-inventory={changedir}/hosts --ssh-config={changedir}/vagrant_ssh_config {toxinidir}/tests/functional/tests