09847567ae
"shell" step doesn't support check mode, which currently leads to failures, when Ansible is being run in check mode (because Ansible doesn't run command, assuming that command might have effect, and no "rc" or "output" is registered). Setting "check_mode: no" allows to run those "shell" commands in check mode (which is safe, because those shell commands doesn't have side effects).
95 lines
2.3 KiB
YAML
95 lines
2.3 KiB
YAML
---
|
|
|
|
- name: reset | stop services
|
|
service: name={{ item }} state=stopped
|
|
with_items:
|
|
- kubelet
|
|
- etcd
|
|
failed_when: false
|
|
|
|
- name: reset | remove services
|
|
file:
|
|
path: "/etc/systemd/system/{{ item }}.service"
|
|
state: absent
|
|
with_items:
|
|
- kubelet
|
|
- etcd
|
|
register: services_removed
|
|
|
|
- name: reset | remove docker dropins
|
|
file:
|
|
path: "/etc/systemd/system/docker.service.d/{{ item }}"
|
|
state: absent
|
|
with_items:
|
|
- docker-dns.conf
|
|
- docker-options.conf
|
|
register: docker_dropins_removed
|
|
|
|
- name: reset | systemctl daemon-reload
|
|
command: systemctl daemon-reload
|
|
when: services_removed.changed or docker_dropins_removed.changed
|
|
|
|
- name: reset | remove all containers
|
|
shell: "{{ docker_bin_dir }}/docker ps -aq | xargs -r docker rm -fv"
|
|
|
|
- name: reset | restart docker if needed
|
|
service: name=docker state=restarted
|
|
when: docker_dropins_removed.changed
|
|
|
|
- name: reset | gather mounted kubelet dirs
|
|
shell: mount | grep /var/lib/kubelet | awk '{print $3}' | tac
|
|
check_mode: no
|
|
register: mounted_dirs
|
|
|
|
- name: reset | unmount kubelet dirs
|
|
command: umount {{item}}
|
|
with_items: '{{ mounted_dirs.stdout_lines }}'
|
|
|
|
- name: reset | delete some files and directories
|
|
file: path={{ item }} state=absent
|
|
with_items:
|
|
- "{{kube_config_dir}}"
|
|
- /var/lib/kubelet
|
|
- /var/lib/etcd
|
|
- /etc/ssl/etcd
|
|
- /var/log/calico
|
|
- /etc/cni
|
|
- /etc/nginx
|
|
- /etc/dnsmasq.d
|
|
- /etc/dnsmasq.conf
|
|
- /etc/dnsmasq.d-available
|
|
- /etc/etcd.env
|
|
- /etc/calico
|
|
- /opt/cni
|
|
- /etc/dhcp/dhclient.d/zdnsupdate.sh
|
|
- /etc/dhcp/dhclient-exit-hooks.d/zdnsupdate
|
|
- "{{ bin_dir }}/kubelet"
|
|
|
|
- name: reset | remove dns settings from dhclient.conf
|
|
blockinfile:
|
|
dest: "{{ item }}"
|
|
state: absent
|
|
follow: yes
|
|
marker: "# Ansible entries {mark}"
|
|
failed_when: false
|
|
with_items:
|
|
- /etc/dhclient.conf
|
|
- /etc/dhcp/dhclient.conf
|
|
|
|
- name: reset | remove host entries from /etc/hosts
|
|
blockinfile:
|
|
dest: "/etc/hosts"
|
|
state: absent
|
|
follow: yes
|
|
marker: "# Ansible inventory hosts {mark}"
|
|
|
|
- name: reset | Restart network
|
|
service:
|
|
name: >-
|
|
{% if ansible_os_family == "RedHat" -%}
|
|
network
|
|
{%- elif ansible_os_family == "Debian" -%}
|
|
networking
|
|
{%- endif %}
|
|
state: restarted
|
|
when: ansible_os_family != "CoreOS"
|