From 5fa53e2eebad7f8e848839eeb96d7cd2be57dcda Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Wed, 23 Dec 2020 13:36:40 +0100 Subject: [PATCH] Improve tests: don't install daemon when running inside a container (#56) * If running inside a container, only install docker CLI, not docker daemon. ci_complete * Fix OpenSUSE. --- .../integration/targets/setup_docker/defaults/main.yml | 3 +++ .../integration/targets/setup_docker/tasks/Debian.yml | 2 +- .../integration/targets/setup_docker/tasks/Fedora.yml | 2 +- .../targets/setup_docker/tasks/RedHat-7.yml | 3 ++- .../targets/setup_docker/tasks/RedHat-8.yml | 3 ++- tests/integration/targets/setup_docker/tasks/Suse.yml | 2 +- tests/integration/targets/setup_docker/tasks/main.yml | 10 +++++++--- tests/integration/targets/setup_docker/vars/Debian.yml | 1 + tests/integration/targets/setup_docker/vars/Fedora.yml | 5 +---- .../integration/targets/setup_docker/vars/RedHat-7.yml | 1 + .../integration/targets/setup_docker/vars/RedHat-8.yml | 3 +++ tests/integration/targets/setup_docker/vars/Suse.yml | 6 ++++++ .../targets/setup_docker/vars/Ubuntu-14.yml | 1 + .../integration/targets/setup_docker/vars/default.yml | 1 + 14 files changed, 31 insertions(+), 12 deletions(-) diff --git a/tests/integration/targets/setup_docker/defaults/main.yml b/tests/integration/targets/setup_docker/defaults/main.yml index 666c8cdf..661a309e 100644 --- a/tests/integration/targets/setup_docker/defaults/main.yml +++ b/tests/integration/targets/setup_docker/defaults/main.yml @@ -1,3 +1,4 @@ +--- docker_cli_version: '0.0' docker_api_version: '0.0' docker_py_version: '0.0' @@ -5,6 +6,8 @@ docker_skip_cleanup: yes docker_prereq_packages: [] docker_packages: - docker-ce +docker_cli_packages: + - docker-ce-cli docker_pip_extra_packages: [] docker_pip_package: docker diff --git a/tests/integration/targets/setup_docker/tasks/Debian.yml b/tests/integration/targets/setup_docker/tasks/Debian.yml index 7ca964dd..84a1428b 100644 --- a/tests/integration/targets/setup_docker/tasks/Debian.yml +++ b/tests/integration/targets/setup_docker/tasks/Debian.yml @@ -27,7 +27,7 @@ - name: Install Docker CE apt: - name: '{{ docker_packages }}' + name: '{{ docker_packages if needs_docker_daemon else docker_cli_packages }}' state: present update_cache: true diff --git a/tests/integration/targets/setup_docker/tasks/Fedora.yml b/tests/integration/targets/setup_docker/tasks/Fedora.yml index 28848373..f50cc2c8 100644 --- a/tests/integration/targets/setup_docker/tasks/Fedora.yml +++ b/tests/integration/targets/setup_docker/tasks/Fedora.yml @@ -20,7 +20,7 @@ - name: Install docker dnf: - name: "{{ docker_packages }}" + name: "{{ docker_packages if needs_docker_daemon else docker_cli_packages }}" state: present enablerepo: docker-ce-test notify: cleanup docker diff --git a/tests/integration/targets/setup_docker/tasks/RedHat-7.yml b/tests/integration/targets/setup_docker/tasks/RedHat-7.yml index 6e798ce2..abcc2b8a 100644 --- a/tests/integration/targets/setup_docker/tasks/RedHat-7.yml +++ b/tests/integration/targets/setup_docker/tasks/RedHat-7.yml @@ -34,7 +34,7 @@ - name: Install docker yum: - name: "{{ docker_packages }}" + name: "{{ docker_packages if needs_docker_daemon else docker_cli_packages }}" state: present notify: cleanup docker @@ -43,3 +43,4 @@ name: docker state: started ignore_errors: "{{ ansible_virtualization_type in ['docker', 'container', 'containerd'] }}" + when: needs_docker_daemon diff --git a/tests/integration/targets/setup_docker/tasks/RedHat-8.yml b/tests/integration/targets/setup_docker/tasks/RedHat-8.yml index c207f4ab..a7c7d586 100644 --- a/tests/integration/targets/setup_docker/tasks/RedHat-8.yml +++ b/tests/integration/targets/setup_docker/tasks/RedHat-8.yml @@ -23,7 +23,7 @@ - name: Install docker dnf: - name: "{{ docker_packages }}" + name: "{{ docker_packages if needs_docker_daemon else docker_cli_packages }}" state: present notify: cleanup docker @@ -32,3 +32,4 @@ name: docker state: started ignore_errors: "{{ ansible_virtualization_type in ['docker', 'container', 'containerd'] }}" + when: needs_docker_daemon diff --git a/tests/integration/targets/setup_docker/tasks/Suse.yml b/tests/integration/targets/setup_docker/tasks/Suse.yml index f107506b..52cdc1ba 100644 --- a/tests/integration/targets/setup_docker/tasks/Suse.yml +++ b/tests/integration/targets/setup_docker/tasks/Suse.yml @@ -1,7 +1,7 @@ --- - name: Install docker 17 community.general.zypper: - name: "{{ docker_packages }}" + name: "{{ docker_packages if needs_docker_daemon else docker_cli_packages }}" force: yes disable_gpg_check: yes update_cache: yes diff --git a/tests/integration/targets/setup_docker/tasks/main.yml b/tests/integration/targets/setup_docker/tasks/main.yml index e1b25dc8..ed54a6da 100644 --- a/tests/integration/targets/setup_docker/tasks/main.yml +++ b/tests/integration/targets/setup_docker/tasks/main.yml @@ -7,6 +7,13 @@ - 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: 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: @@ -136,9 +143,6 @@ when: docker_cli_version is version('0.0', '>') - - name: Detect whether we are running inside a container - current_container_facts: - - name: Inspect current container docker_container_info: name: "{{ ansible_module_container_id }}" diff --git a/tests/integration/targets/setup_docker/vars/Debian.yml b/tests/integration/targets/setup_docker/vars/Debian.yml index e9ffb941..66f3ac9f 100644 --- a/tests/integration/targets/setup_docker/vars/Debian.yml +++ b/tests/integration/targets/setup_docker/vars/Debian.yml @@ -1,3 +1,4 @@ +--- docker_prereq_packages: - apt-transport-https - ca-certificates diff --git a/tests/integration/targets/setup_docker/vars/Fedora.yml b/tests/integration/targets/setup_docker/vars/Fedora.yml index 43126881..ed97d539 100644 --- a/tests/integration/targets/setup_docker/vars/Fedora.yml +++ b/tests/integration/targets/setup_docker/vars/Fedora.yml @@ -1,4 +1 @@ -docker_prereq_packages: [] - -docker_packages: - - docker-ce +--- diff --git a/tests/integration/targets/setup_docker/vars/RedHat-7.yml b/tests/integration/targets/setup_docker/vars/RedHat-7.yml index 7166b1f5..100a878d 100644 --- a/tests/integration/targets/setup_docker/vars/RedHat-7.yml +++ b/tests/integration/targets/setup_docker/vars/RedHat-7.yml @@ -1,3 +1,4 @@ +--- docker_prereq_packages: - yum-utils - device-mapper-persistent-data diff --git a/tests/integration/targets/setup_docker/vars/RedHat-8.yml b/tests/integration/targets/setup_docker/vars/RedHat-8.yml index ff6dcf7b..99af35f4 100644 --- a/tests/integration/targets/setup_docker/vars/RedHat-8.yml +++ b/tests/integration/targets/setup_docker/vars/RedHat-8.yml @@ -1,3 +1,4 @@ +--- docker_prereq_packages: - yum-utils - device-mapper-persistent-data @@ -7,3 +8,5 @@ docker_prereq_packages: docker_packages: - docker-ce-19.03.13 - docker-ce-cli-19.03.13 +docker_cli_packages: + - docker-ce-cli-19.03.13 diff --git a/tests/integration/targets/setup_docker/vars/Suse.yml b/tests/integration/targets/setup_docker/vars/Suse.yml index ad0d515e..1974462a 100644 --- a/tests/integration/targets/setup_docker/vars/Suse.yml +++ b/tests/integration/targets/setup_docker/vars/Suse.yml @@ -1,2 +1,8 @@ +--- docker_packages: - docker>=17 + +# OpenSUSE 15 does not seem to have docker-client (https://software.opensuse.org/package/docker-client) +# or any other Docker CLI-only package +docker_cli_packages: + - docker>=17 diff --git a/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml b/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml index 36ab54b9..84130934 100644 --- a/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml +++ b/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml @@ -1,3 +1,4 @@ +--- docker_pip_extra_packages: # Installing requests >=2.12.0 on Ubuntu 14.04 breaks certificate validation. We restrict to an older version # to ensure out get_url tests work out fine. This is only an issue if pyOpenSSL is also installed. diff --git a/tests/integration/targets/setup_docker/vars/default.yml b/tests/integration/targets/setup_docker/vars/default.yml index e69de29b..ed97d539 100644 --- a/tests/integration/targets/setup_docker/vars/default.yml +++ b/tests/integration/targets/setup_docker/vars/default.yml @@ -0,0 +1 @@ +---