community.docker/tests/integration/targets/setup_docker/tasks/main.yml
Felix Fontein 1e286852b2
[stable-2] Integration tests: split up Docker setup, move docker_compose tests into own group (#719)
* Rename setup role.

* Create new CI group 6, and move docker_compose v1 tests into there.

* Split up Docker setup in integration tests.

* Change setup_docker_compose_v1 to install its own Docker SDK for Python.

* Restrict Docker SDK for Python to < 7.0.0 in EE.
2023-12-09 18:38:54 +01:00

143 lines
5.5 KiB
YAML

---
####################################################################
# WARNING: These are designed specifically for Ansible tests #
# and should not be used as examples of how to write Ansible roles #
####################################################################
- name: Setup Docker
when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6']
block:
- name: Detect whether we are running inside a container
current_container_facts:
- name: Look for marker whether Docker was already set up
stat:
path: /root/community.docker-docker-is-set-up
register: docker_setup_marker
- when: not docker_setup_marker.stat.exists
block:
- name: Determine whether Docker Daemon needs to be installed
set_fact:
needs_docker_daemon: '{{ not ansible_module_running_in_container }}'
- name: Include distribution specific variables
include_vars: "{{ lookup('first_found', params) }}"
vars:
params:
files:
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
- "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml"
- "{{ ansible_facts.distribution }}.yml"
- "{{ ansible_facts.os_family }}.yml"
- default.yml
paths:
- "{{ role_path }}/vars"
- name: Include distribution specific tasks
include_tasks: "{{ lookup('first_found', params) }}"
vars:
params:
files:
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
- "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml"
- "{{ ansible_facts.distribution }}.yml"
- "{{ ansible_facts.os_family }}.yml"
paths:
- "{{ role_path }}/tasks"
- name: Make sure that docker is running
service:
name: docker
state: started
when: not ansible_module_running_in_container
- name: Set marker that Docker was already set up
file:
path: /root/community.docker-docker-is-set-up
state: touch
when: docker_skip_cleanup
# Detect docker API version
- name: Check Docker API version
command: "docker version -f {% raw %}'{{(index .Server.Components 0).Details.ApiVersion}}'{% endraw %}"
register: docker_api_version_stdout
ignore_errors: yes
# Detect docker CLI version
- name: Check Docker CLI version
command: "docker version -f {% raw %}'{{.Client.Version}}'{% endraw %}"
register: docker_cli_version_stdout
ignore_errors: yes
- set_fact:
docker_cli_version: "{{ docker_cli_version_stdout.stdout | default('0.0') }}"
docker_api_version: "{{ docker_api_version_stdout.stdout | default('0.0') }}"
- debug:
msg: "Docker CLI version: {{ docker_cli_version }}; Docker API version: {{ docker_api_version }}"
- block:
# Cleanup docker daemon
- command: 'docker ps --no-trunc --format {% raw %}"{{.Names}}"{% endraw %}'
- name: "Remove all ansible-docker-test-* docker containers"
shell: 'docker ps --no-trunc --format {% raw %}"{{.Names}}"{% endraw %} | grep "^ansible-docker-test-" | xargs -r docker rm -f'
register: docker_containers
retries: 3
delay: 3
until: docker_containers is success
ignore_errors: yes
- name: "Remove all ansible-docker-test-* docker volumes"
shell: 'docker volume ls --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-docker-test-" | xargs -r docker volume rm -f'
register: docker_volumes
ignore_errors: yes
- name: "Remove all ansible-docker-test-* docker networks"
shell: 'docker network ls --no-trunc --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-docker-test-" | xargs -r docker network rm'
register: docker_networks
ignore_errors: yes
- name: Cleaned docker resources
debug:
var: docker_resources
vars:
docker_resources:
containers: "{{ docker_containers.stdout_lines | default([]) }}"
volumes: "{{ docker_volumes.stdout_lines | default([]) }}"
networks: "{{ docker_networks.stdout_lines | default([]) }}"
# List all existing docker resources
- name: List all docker containers
command: docker ps --no-trunc -a
register: docker_containers
ignore_errors: yes
- name: List all docker volumes
command: docker volume ls
register: docker_volumes
ignore_errors: yes
- name: List all docker networks
command: docker network ls --no-trunc
register: docker_networks
ignore_errors: yes
- name: List all docker images
command: docker images --no-trunc -a
register: docker_images
ignore_errors: yes
- name: Still existing docker resources
debug:
var: docker_resources
vars:
docker_resources:
containers: "{{ docker_containers.stdout_lines | default([]) }}"
volumes: "{{ docker_volumes.stdout_lines | default([]) }}"
networks: "{{ docker_networks.stdout_lines | default([]) }}"
images: "{{ docker_images.stdout_lines | default([]) }}"
when: docker_cli_version is version('0.0', '>')