c12s-kubespray/roles/etcdctl/tasks/main.yml
Hans Feldt 544aa00c17
install etcdctl to host when etcd deployment type is kubeadm (#6857)
* create a wrapper script with pki options
* supports all kubespray managed container engines

Co-authored-by: Hans Feldt <hafe@users.noreply.github.com>
2020-11-04 00:20:04 -08:00

59 lines
1.7 KiB
YAML

---
# To get the binary from container to host, use the etcd data directory mounted
# rw from host into the container.
- name: Check unintentional include of this role
assert:
that: etcd_kubeadm_enabled
- name: Check if etcdctl exist
stat:
path: "{{ bin_dir }}/etcdctl"
register: stat_etcdctl
- block:
- name: Check version
command: "{{ bin_dir }}/etcdctl version"
register: etcdctl_version
check_mode: no
changed_when: false
- name: Remove old binary if version is not OK
file:
path: "{{ bin_dir }}/etcdctl"
state: absent
when: etcd_version.lstrip('v') not in etcdctl_version.stdout
when: stat_etcdctl.stat.exists
- name: Check if etcdctl still exist after version check
stat:
path: "{{ bin_dir }}/etcdctl"
register: stat_etcdctl
- block:
- name: Copy etcdctl script to host
shell: "docker exec \"$(docker ps -qf ancestor={{ etcd_image_repo }}:{{ etcd_image_tag }})\" cp /usr/local/bin/etcdctl {{ etcd_data_dir }}"
when: container_manager == "docker"
- name: Copy etcdctl script to host
shell: "crictl exec \"$(crictl ps -q --image {{ etcd_image_repo }}:{{ etcd_image_tag }})\" cp /usr/local/bin/etcdctl {{ etcd_data_dir }}"
when: container_manager in ['crio', 'containerd']
- name: Copy etcdctl to {{ bin_dir }}
copy:
src: "{{ etcd_data_dir }}/etcdctl"
dest: "{{ bin_dir }}"
remote_src: true
mode: 0755
when: not stat_etcdctl.stat.exists
- name: Remove binary in etcd data dir
file:
path: "{{ etcd_data_dir }}/etcdctl"
state: absent
- name: Create etcdctl wrapper script
template:
src: etcdctl.sh.j2
dest: "{{ bin_dir }}/etcdctl.sh"
mode: 0755