Przeglądaj źródła

Add some guards to wait for images to be pulled before moving on

Scott Dodson 9 lat temu
rodzic
commit
48778f29f2

+ 10 - 0
roles/etcd/tasks/main.yml

@@ -20,6 +20,16 @@
 - name: Pull etcd container
   command: docker pull {{ openshift.etcd.etcd_image }}
   when: openshift.common.is_containerized | bool and openshift.etcd.etcd_image not in docker_images.stdout
+  
+- name: Wait for etcd image
+  command: >
+      docker images
+  register: docker_images
+  until: openshift.etcd.etcd_image in docker_images.stdout
+  retries: 30
+  delay: 10
+  changed_when: false
+  when: openshift.common.is_containerized | bool
 
 - name: Install etcd container service file
   template:

+ 16 - 0
roles/openshift_cli/tasks/main.yml

@@ -8,10 +8,26 @@
   yum: pkg={{ openshift.common.service_type }}-clients state=installed
   when: not openshift.common.is_containerized | bool
   
+- name: List Docker images
+  command: >
+    docker images
+  register: docker_images
+  
 - name: Pull CLI Image
   command: >
     docker pull {{ openshift.common.cli_image }}
+  when: openshift.common.is_containerized | bool and openshift.common.cli_image not in docker_images.stdout
+  
+- name: Wait for CLI image
+  command: >
+      docker images
+  register: docker_images
+  until: openshift.common.cli_image in docker_images.stdout
+  retries: 30
+  delay: 10
+  changed_when: false
   when: openshift.common.is_containerized | bool
+
   
 - name: Create /usr/local/bin/openshift cli wrapper
   template:

+ 11 - 1
roles/openshift_master/tasks/main.yml

@@ -91,10 +91,20 @@
   when: openshift.common.is_containerized | bool
   register: docker_images
 
-- name: Pull required docker image
+- name: Pull master image
   command: >
     docker pull {{ openshift.master.master_image }}
   when: openshift.common.is_containerized | bool and openshift.master.master_image not in docker_images.stdout
+  
+- name: Wait for master image
+  command: >
+      docker images
+  register: docker_images
+  until: openshift.master.master_image in docker_images.stdout
+  retries: 30
+  delay: 10
+  changed_when: false
+  when: openshift.common.is_containerized | bool
 
 - name: Install Master docker service file
   template:

+ 26 - 5
roles/openshift_node/tasks/main.yml

@@ -54,6 +54,32 @@
   command: >
     docker pull {{ openshift.node.node_image }}
   when: openshift.common.is_containerized | bool and openshift.node.node_image not in docker_images.stdout
+  
+- name: Wait for node image
+  command: >
+      docker images
+  register: docker_images
+  until: openshift.node.node_image in docker_images.stdout
+  retries: 30
+  delay: 10
+  changed_when: false
+  when: openshift.common.is_containerized | bool
+    
+- name: Pull OpenVSwitch image
+  command: >
+    docker pull {{ openshift.node.ovs_image }}
+  when: openshift.common.is_containerized | bool and openshift.node.ovs_image not in docker_images.stdout
+    and openshift.common.use_openshift_sdn | bool
+  
+- name: Wait for OpenVSwitch image
+  command: >
+      docker images
+  register: docker_images
+  until: openshift.node.ovs_image in docker_images.stdout
+  retries: 30
+  delay: 10
+  changed_when: false
+  when: openshift.common.is_containerized | bool and openshift.common.use_openshift_sdn | bool
 
 - name: Install Node docker service file
   template:
@@ -62,11 +88,6 @@
   register: install_node_result
   when: openshift.common.is_containerized | bool
 
-- name: Pull OpenvSwitch docker image
-  command: >
-    docker pull {{ openshift.node.ovs_image }}
-  when: openshift.common.is_containerized | bool and openshift.node.ovs_image not in docker_images.stdout
-
 - name: Install OpenvSwitch docker service file
   template:
     dest: "/etc/systemd/system/openvswitch.service"