diff --git a/roles/etcd/tasks/configure.yml b/roles/etcd/tasks/configure.yml index c4cf496bf67aea60c2cfde0054862d474910947a..4b802d919f665f0aadd13a830ecf1eaf340954a7 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 679b98077b3f6964abf472de619bb723795da07f..56af3b0984b2aa3ce11cd347fb8841847473e5d0 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 fdb17cf514b71c8b2a38426d53289b2728793413..c5e8b8cb257873d27e4cb1a8011c6c6e63cfd892 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 d5f2d8ca8e370737376e575c7ca8a834b94676a8..aec37836f3fe3c686a60c87c17a0d616f81fda89 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 b31ad6c6aa0ac493686b0ddd466e996ca81d7346..3d90fd033f18c327b803fdfebb12729fd6e0af8f 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 e41193585422dfbcf86f1c37d7ef25cb506c9864..6ec2f0857a96d342315bee880a04eb7b668dfc02 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 a498e6445854f7c3284f1e40728e5e689b232e55..91c7eb33f2b74bf85f3117d857fee29ac48ffc9a 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 b1dd11a37d756b83563e267b640131d218366917..c8eb3628260e03f96d342b4dc46d1fd4a05d634b 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: