]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
docker2podman: pull images from docker daemon
authorDimitri Savineau <dsavinea@redhat.com>
Thu, 16 Apr 2020 15:30:11 +0000 (11:30 -0400)
committerDimitri Savineau <savineau.dimitri@gmail.com>
Wed, 3 Jun 2020 17:20:24 +0000 (13:20 -0400)
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 d38f21aeba29f341dc737b8cdeaa9fdaa9f55408)

infrastructure-playbooks/docker-to-podman.yml
tox-docker2podman.ini

index 19b28335e0d6568a35b91f809bdc5e35e1449cba..a27b1fd8aeccb8a72f5150a42155c1bac8cfde67 100644 (file)
@@ -46,8 +46,9 @@
     - "{{ mgr_group_name | default('mgrs') }}"
     - "{{ iscsi_gw_group_name | default('iscsigws') }}"
     - "{{ rbdmirror_group_name | default('rbdmirrors') }}"
+  gather_facts: false
   become: true
-  pre_tasks:
+  tasks:
     - import_role:
         name: ceph-defaults
     - import_role:
           set_fact:
             ceph_docker_version: "{{ ceph_docker_version.stdout.split(' ')[2] }}"
 
-
-  tasks:
-    - name: set_fact container_binary, container_binding_name, container_service_name, container_package_name
+    - name: set_fact docker2podman and container_binary
       set_fact:
         docker2podman: True
         container_binary: podman
-        container_binding_name: podman
-        container_service_name: podman
-        container_package_name: podman
 
     - name: install podman
       package:
         state: present
       register: result
       until: result is succeeded
-      tags:
-        - with_pkg
+      tags: with_pkg
       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:
         name: ceph-mon
         tasks_from: systemd.yml
         tasks_from: systemd.yml
       when: inventory_hostname in groups.get(rgw_group_name, [])
 
-    - name: reload ceph monitor systemd unit
+    - name: reload systemd daemon
       systemd:
         daemon_reload: yes
\ No newline at end of file
index b9b56784d0b0d1191a096644f7ad9b43f7fee376..633bacecc9a7417b0b4c53ae0a3a6d0a03009a86 100644 (file)
@@ -44,7 +44,13 @@ commands=
       ceph_docker_image_tag={env:CEPH_DOCKER_IMAGE_TAG:latest-nautilus} \
   "
 
-  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-nautilus} \
+  "
 
   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