From 6fdcaa1a634aa00dd22766d36290f7dcce4115b2 Mon Sep 17 00:00:00 2001 From: Bogdan Dobrelya Date: Tue, 13 Sep 2016 14:36:01 +0200 Subject: [PATCH 1/2] Add retries for copying binaries from containers Closes issue: https://github.com/kubespray/kargo/issues/479 Signed-off-by: Bogdan Dobrelya --- roles/etcd/tasks/install.yml | 4 ++++ roles/kubernetes/master/tasks/main.yml | 5 ++++- roles/network_plugin/calico/tasks/main.yml | 4 ++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/roles/etcd/tasks/install.yml b/roles/etcd/tasks/install.yml index 26271943a..959133c29 100644 --- a/roles/etcd/tasks/install.yml +++ b/roles/etcd/tasks/install.yml @@ -17,6 +17,10 @@ /usr/bin/docker cp etcdctl-binarycopy:{{ etcd_container_bin_dir }}etcdctl {{ bin_dir }}/etcdctl && /usr/bin/docker rm -f etcdctl-binarycopy" when: etcd_deployment_type == "docker" + register: etcd_task_result + until: etcd_task_result.rc == 0 + retries: 4 + delay: "{{ 20 | random + 3 }}" changed_when: false #Plan B: looks nicer, but requires docker-py on all hosts: diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml index 4d0933550..e8dfe08fc 100644 --- a/roles/kubernetes/master/tasks/main.yml +++ b/roles/kubernetes/master/tasks/main.yml @@ -9,8 +9,11 @@ - name: Copy kubectl from hyperkube container command: "/usr/bin/docker run --rm -v {{ bin_dir }}:/systembindir {{ hyperkube_image_repo }}:{{ hyperkube_image_tag }} /bin/cp /hyperkube /systembindir/kubectl" + register: kube_task_result + until: kube_task_result.rc == 0 + retries: 4 + delay: "{{ 20 | random + 3 }}" changed_when: false - register: kubectl_launcher - name: Write kube-apiserver manifest template: diff --git a/roles/network_plugin/calico/tasks/main.yml b/roles/network_plugin/calico/tasks/main.yml index abe0f690d..09c3b47d5 100644 --- a/roles/network_plugin/calico/tasks/main.yml +++ b/roles/network_plugin/calico/tasks/main.yml @@ -34,6 +34,10 @@ - name: Calico | Copy cni plugins from hyperkube command: "/usr/bin/docker run --rm -v /opt/cni/bin:/cnibindir {{ hyperkube_image_repo }}:{{ hyperkube_image_tag }} /bin/cp -r /opt/cni/bin/. /cnibindir/" + register: cni_task_result + until: cni_task_result.rc == 0 + retries: 4 + delay: "{{ 20 | random + 3 }}" changed_when: false when: use_hyperkube_cni From 783871a2539392a5cd0cb0deb93c05ca8a502252 Mon Sep 17 00:00:00 2001 From: Bogdan Dobrelya Date: Tue, 13 Sep 2016 15:29:22 +0200 Subject: [PATCH 2/2] Add retries for packages installation Signed-off-by: Bogdan Dobrelya --- roles/docker/tasks/main.yml | 8 ++++++++ roles/kubernetes/preinstall/tasks/main.yml | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml index 6d71c4980..826e16978 100644 --- a/roles/docker/tasks/main.yml +++ b/roles/docker/tasks/main.yml @@ -27,6 +27,10 @@ id: "{{item}}" keyserver: "{{docker_repo_key_info.keyserver}}" state: present + register: keyserver_task_result + until: keyserver_task_result|success + retries: 4 + delay: "{{ 20 | random + 3 }}" with_items: "{{ docker_repo_key_info.repo_keys }}" when: ansible_os_family != "CoreOS" @@ -51,6 +55,10 @@ pkg: "{{item.name}}" force: "{{item.force|default(omit)}}" state: present + register: docker_task_result + until: docker_task_result|success + retries: 4 + delay: "{{ 20 | random + 3 }}" with_items: "{{ docker_package_info.pkgs }}" when: (ansible_os_family != "CoreOS") and (docker_package_info.pkgs|length > 0) diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml index ec1bd64c0..8c22b73bf 100644 --- a/roles/kubernetes/preinstall/tasks/main.yml +++ b/roles/kubernetes/preinstall/tasks/main.yml @@ -101,6 +101,10 @@ module: "{{ ansible_pkg_mgr }}" name: "{{ item }}" state: latest + register: pkgs_task_result + until: pkgs_task_result|success + retries: 4 + delay: "{{ 20 | random + 3 }}" with_items: "{{required_pkgs | default([]) | union(common_required_pkgs|default([]))}}" when: ansible_os_family != "CoreOS"