diff --git a/roles/etcd/tasks/configure.yml b/roles/etcd/tasks/configure.yml index c4cf496bf..4b802d919 100644 --- a/roles/etcd/tasks/configure.yml +++ b/roles/etcd/tasks/configure.yml @@ -5,8 +5,7 @@ dest: /lib/systemd/system/etcd.service backup: yes when: init_system == "systemd" - notify: - - restart systemd-etcd + notify: restart systemd-etcd - name: Configure | Write calico-node initd script template: @@ -24,4 +23,7 @@ notify: restart etcd - name: Configure | Ensure etcd is running - service: name=etcd state=started enabled=yes + service: + name: etcd + state: started + enabled: yes diff --git a/roles/etcd/tasks/install.yml b/roles/etcd/tasks/install.yml index 679b98077..56af3b098 100644 --- a/roles/etcd/tasks/install.yml +++ b/roles/etcd/tasks/install.yml @@ -1,8 +1,9 @@ --- -- name: INSTALL | Copy etcd binaries - command: cp -pf "{{ etcd_bin_dir }}/{{ item }}" "{{ bin_dir }}" - with_items: - - etcdctl - - etcd +- name: Install | Copy etcd binary + command: rsync -piu "{{ etcd_bin_dir }}/etcd" "{{ bin_dir }}/etcd" + register: etcd_copy + changed_when: false + +- name: Install | Copy etcdctl binary + command: rsync -piu "{{ etcd_bin_dir }}/etcdctl" "{{ bin_dir }}/etcdctl" changed_when: false - notify: restart etcd diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml index fdb17cf51..c5e8b8cb2 100644 --- a/roles/etcd/tasks/main.yml +++ b/roles/etcd/tasks/main.yml @@ -1,3 +1,8 @@ --- - include: install.yml - include: configure.yml + +- name: Restart etcd if binary changed + command: /bin/true + notify: restart etcd + when: etcd_copy.stdout_lines diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml index d5f2d8ca8..aec37836f 100644 --- a/roles/kubernetes/master/tasks/main.yml +++ b/roles/kubernetes/master/tasks/main.yml @@ -7,12 +7,14 @@ src: kubectl_bash_completion.sh dest: /etc/bash_completion.d/kubectl.sh -- name: Install kubernetes binaries - command: cp -pf "{{ local_release_dir }}/kubernetes/bin/{{ item }}" "{{ bin_dir }}/{{ item }}" +- name: Copy kube-apiserver binary + command: rsync -piu "{{ local_release_dir }}/kubernetes/bin/kube-apiserver" "{{ bin_dir }}/kube-apiserver" + register: kube_apiserver_copy + changed_when: false + +- name: Copy kubectl binary + command: rsync -piu "{{ local_release_dir }}/kubernetes/bin/kubectl" "{{ bin_dir }}/kubectl" changed_when: false - with_items: - - kubectl - - kube-apiserver - name: populate users for basic auth in API lineinfile: @@ -55,7 +57,11 @@ mode: 755 backup: yes when: init_system == "sysvinit" and ansible_os_family == "Debian" + +- name: Restart apiserver + command: /bin/true notify: restart kube-apiserver + changed_when: is_gentoken_calico|default(false) or kube_apiserver_copy.stdout_lines - name: Allow apiserver to bind on both secure and insecure ports shell: setcap cap_net_bind_service+ep {{ bin_dir }}/kube-apiserver diff --git a/roles/kubernetes/node/tasks/install.yml b/roles/kubernetes/node/tasks/install.yml index b31ad6c6a..3d90fd033 100644 --- a/roles/kubernetes/node/tasks/install.yml +++ b/roles/kubernetes/node/tasks/install.yml @@ -15,16 +15,15 @@ notify: restart kubelet - name: install | Install kubelet binary - command: cp -pf "{{ local_release_dir }}/kubernetes/bin/kubelet" "{{ bin_dir }}/kubelet" + command: rsync -piu "{{ local_release_dir }}/kubernetes/bin/kubelet" "{{ bin_dir }}/kubelet" + register: kubelet_copy changed_when: false - notify: restart kubelet - name: install | Calico-plugin | Directory file: path=/usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/ state=directory when: kube_network_plugin == "calico" - name: install | Calico-plugin | Binary - command: cp -pf "{{ local_release_dir }}/calico/bin/calico" "/usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/calico" + command: rsync -piu "{{ local_release_dir }}/calico/bin/calico" "/usr/libexec/kubernetes/kubelet-plugins/net/exec/calico/calico" when: kube_network_plugin == "calico" changed_when: false - notify: restart kubelet diff --git a/roles/kubernetes/node/tasks/main.yml b/roles/kubernetes/node/tasks/main.yml index e41193585..6ec2f0857 100644 --- a/roles/kubernetes/node/tasks/main.yml +++ b/roles/kubernetes/node/tasks/main.yml @@ -45,6 +45,11 @@ src: manifests/kube-proxy.manifest.j2 dest: "{{ kube_manifest_dir }}/kube-proxy.manifest" +- name: Restart kubelet if binary changed + command: /bin/true + notify: restart kubelet + when: kubelet_copy.stdout_lines + - name: Enable kubelet service: name: kubelet diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml index a498e6445..91c7eb33f 100644 --- a/roles/kubernetes/preinstall/tasks/main.yml +++ b/roles/kubernetes/preinstall/tasks/main.yml @@ -26,9 +26,12 @@ always_run: True register: init_system_output changed_when: False + tags: always - set_fact: init_system: "{{ init_system_output.stdout }}" + always_run: True + tags: always - name: Install python-apt for Debian distribs shell: apt-get install -y python-apt diff --git a/roles/network_plugin/tasks/calico.yml b/roles/network_plugin/tasks/calico.yml index b1dd11a37..c8eb36282 100644 --- a/roles/network_plugin/tasks/calico.yml +++ b/roles/network_plugin/tasks/calico.yml @@ -1,8 +1,8 @@ --- - name: Calico | Install calicoctl bin - command: cp -pf "{{ local_release_dir }}/calico/bin/calicoctl" "{{ bin_dir }}/calicoctl" + command: rsync -piu "{{ local_release_dir }}/calico/bin/calicoctl" "{{ bin_dir }}/calicoctl" + register: calico_copy changed_when: false - notify: restart calico-node - name: Calico | install calicoctl file: path={{ bin_dir }}/calicoctl mode=0755 state=file @@ -71,6 +71,12 @@ - name: Calico | Enable calico-node service: name=calico-node enabled=yes state=started +- name: Calico | Restart calico if binary changed + service: + name: calico-node + state: restarted + when: calico_copy.stdout_lines + - name: Calico | Disable node mesh shell: calicoctl bgp node-mesh off environment: