1- name: Setup Docker 2 when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6'] 3 block: 4 - name: Include distribution specific variables 5 include_vars: "{{ lookup('first_found', params) }}" 6 vars: 7 params: 8 files: 9 - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml" 10 - "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml" 11 - "{{ ansible_facts.distribution }}.yml" 12 - "{{ ansible_facts.os_family }}.yml" 13 - default.yml 14 paths: 15 - "{{ role_path }}/vars" 16 17 - name: Include distribution specific tasks 18 include_tasks: "{{ lookup('first_found', params) }}" 19 vars: 20 params: 21 files: 22 - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml" 23 - "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml" 24 - "{{ ansible_facts.distribution }}.yml" 25 - "{{ ansible_facts.os_family }}.yml" 26 paths: 27 - "{{ role_path }}/tasks" 28 29 - name: Install Python requirements 30 pip: 31 state: present 32 name: "{{ docker_pip_packages | union(docker_pip_extra_packages) }}" 33 extra_args: "-c {{ remote_constraints }}" 34 notify: cleanup docker 35 36 # Detect docker CLI, API and docker-py versions 37 - name: Check Docker CLI version 38 command: "docker version -f {% raw %}'{{.Client.Version}}'{% endraw %}" 39 register: docker_cli_version_stdout 40 ignore_errors: yes 41 42 - name: Check Docker API version 43 command: "{{ ansible_python.executable }} -c 'import docker; print(docker.from_env().version()[\"ApiVersion\"])'" 44 register: docker_api_version_stdout 45 ignore_errors: yes 46 47 - name: Check docker-py API version 48 command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'" 49 register: docker_py_version_stdout 50 ignore_errors: yes 51 52 - set_fact: 53 docker_cli_version: "{{ docker_cli_version_stdout.stdout | default('0.0') }}" 54 docker_api_version: "{{ docker_api_version_stdout.stdout | default('0.0') }}" 55 docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}" 56 57 - debug: 58 msg: "Docker CLI version: {{ docker_cli_version }}; Docker API version: {{ docker_api_version }}; docker-py library version: {{ docker_py_version }}" 59 60 - block: 61 # Cleanup docker daemon 62 - name: "Remove all ansible-test-* docker containers" 63 shell: 'docker ps --no-trunc --format {% raw %}"{{.Names}}"{% endraw %} | grep "^ansible-test-" | xargs -r docker rm -f' 64 register: docker_containers 65 retries: 3 66 delay: 3 67 until: docker_containers is success 68 69 - name: "Remove all ansible-test-* docker volumes" 70 shell: 'docker volume ls --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-test-" | xargs -r docker volume rm -f' 71 register: docker_volumes 72 73 - name: "Remove all ansible-test-* docker networks" 74 shell: 'docker network ls --no-trunc --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-test-" | xargs -r docker network rm' 75 register: docker_networks 76 77 - name: Cleaned docker resources 78 debug: 79 var: docker_resources 80 vars: 81 docker_resources: 82 containers: "{{ docker_containers.stdout_lines }}" 83 volumes: "{{ docker_volumes.stdout_lines }}" 84 networks: "{{ docker_networks.stdout_lines }}" 85 86 # List all existing docker resources 87 - name: List all docker containers 88 command: docker ps --no-trunc -a 89 register: docker_containers 90 91 - name: List all docker volumes 92 command: docker volume ls 93 register: docker_volumes 94 95 - name: List all docker networks 96 command: docker network ls --no-trunc 97 register: docker_networks 98 99 - name: List all docker images 100 command: docker images --no-trunc -a 101 register: docker_images 102 103 - name: Still existing docker resources 104 debug: 105 var: docker_resources 106 vars: 107 docker_resources: 108 containers: "{{ docker_containers.stdout_lines }}" 109 volumes: "{{ docker_volumes.stdout_lines }}" 110 networks: "{{ docker_networks.stdout_lines }}" 111 images: "{{ docker_images.stdout_lines }}" 112 113 when: docker_cli_version is version('0.0', '>') 114