--- #Plan A: no docker-py deps - name: Install | Copy etcdctl binary from docker container command: sh -c "{{ docker_bin_dir }}/docker rm -f etcdctl-binarycopy; {{ docker_bin_dir }}/docker create --name etcdctl-binarycopy {{ etcd_image_repo }}:{{ etcd_image_tag }} && {{ docker_bin_dir }}/docker cp etcdctl-binarycopy:{{ etcd_container_bin_dir }}etcdctl {{ bin_dir }}/etcdctl && {{ docker_bin_dir }}/docker rm -f etcdctl-binarycopy" when: etcd_deployment_type == "docker" register: etcd_task_result until: etcd_task_result.rc == 0 retries: 4 delay: "{{ retry_stagger | random + 3 }}" changed_when: false ignore_errors: "{{ ansible_check_mode }}" #Plan B: looks nicer, but requires docker-py on all hosts: #- name: Install | Set up etcd-binarycopy container # docker: # name: etcd-binarycopy # state: present # image: "{{ etcd_image_repo }}:{{ etcd_image_tag }}" # when: etcd_deployment_type == "docker" # #- name: Install | Copy etcdctl from etcd-binarycopy container # command: /usr/bin/docker cp "etcd-binarycopy:{{ etcd_container_bin_dir }}etcdctl" "{{ bin_dir }}/etcdctl" # when: etcd_deployment_type == "docker" # #- name: Install | Clean up etcd-binarycopy container # docker: # name: etcd-binarycopy # state: absent # image: "{{ etcd_image_repo }}:{{ etcd_image_tag }}" # when: etcd_deployment_type == "docker"