diff --git a/.azure-pipelines/azure-pipelines.yml b/.azure-pipelines/azure-pipelines.yml index d5ed0eca..a64e06cb 100644 --- a/.azure-pipelines/azure-pipelines.yml +++ b/.azure-pipelines/azure-pipelines.yml @@ -84,6 +84,7 @@ stages: groups: - 4 - 5 + - 6 ### Community Docker - stage: Docker_community_2_14 @@ -103,6 +104,7 @@ stages: groups: - 4 - 5 + - 6 ### Remote - stage: Remote_2_14 @@ -122,6 +124,7 @@ stages: - 3 - 4 - 5 + - 6 ## Finally diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index cb3f7f2e..8f8ea4e3 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -114,6 +114,10 @@ jobs: docker: fedora31 python: '' target: shippable/posix/group5/ + - ansible: '2.9' + docker: fedora31 + python: '' + target: shippable/posix/group6/ # 2.10 - ansible: '2.10' docker: fedora32 @@ -123,6 +127,10 @@ jobs: docker: fedora32 python: '' target: shippable/posix/group5/ + - ansible: '2.10' + docker: fedora32 + python: '' + target: shippable/posix/group6/ - ansible: '2.10' docker: ubuntu1604 python: '' @@ -131,6 +139,10 @@ jobs: docker: ubuntu1604 python: '' target: shippable/posix/group5/ + - ansible: '2.10' + docker: ubuntu1604 + python: '' + target: shippable/posix/group6/ # 2.11 - ansible: '2.11' docker: fedora33 @@ -140,6 +152,10 @@ jobs: docker: fedora33 python: '' target: shippable/posix/group5/ + - ansible: '2.11' + docker: fedora33 + python: '' + target: shippable/posix/group6/ - ansible: '2.11' docker: alpine3 python: '' @@ -148,6 +164,10 @@ jobs: docker: alpine3 python: '' target: shippable/posix/group5/ + - ansible: '2.11' + docker: alpine3 + python: '' + target: shippable/posix/group6/ # 2.12 - ansible: '2.12' docker: fedora33 @@ -157,6 +177,10 @@ jobs: docker: fedora33 python: '' target: shippable/posix/group5/ + - ansible: '2.12' + docker: fedora33 + python: '' + target: shippable/posix/group6/ - ansible: '2.12' docker: fedora34 python: '' @@ -165,6 +189,10 @@ jobs: docker: fedora34 python: '' target: shippable/posix/group5/ + - ansible: '2.12' + docker: fedora34 + python: '' + target: shippable/posix/group6/ - ansible: '2.12' docker: ubuntu1804 python: '' @@ -173,6 +201,10 @@ jobs: docker: ubuntu1804 python: '' target: shippable/posix/group5/ + - ansible: '2.12' + docker: ubuntu1804 + python: '' + target: shippable/posix/group6/ # 2.13 # NB: We originally wanted to use centos7, but that requires cgroups v1. # So we used alpine3 instead. @@ -184,6 +216,10 @@ jobs: docker: alpine3 python: '' target: shippable/posix/group5/ + - ansible: '2.13' + docker: alpine3 + python: '' + target: shippable/posix/group6/ - ansible: '2.13' docker: fedora35 python: '' @@ -192,6 +228,10 @@ jobs: docker: fedora35 python: '' target: shippable/posix/group5/ + - ansible: '2.13' + docker: fedora35 + python: '' + target: shippable/posix/group6/ - ansible: '2.13' docker: opensuse15py2 python: '' @@ -200,6 +240,10 @@ jobs: docker: opensuse15py2 python: '' target: shippable/posix/group5/ + - ansible: '2.13' + docker: opensuse15py2 + python: '' + target: shippable/posix/group6/ - ansible: '2.13' docker: alpine3 python: '' @@ -208,6 +252,10 @@ jobs: docker: alpine3 python: '' target: shippable/posix/group5/ + - ansible: '2.13' + docker: alpine3 + python: '' + target: shippable/posix/group6/ steps: - name: >- diff --git a/changelogs/fragments/719-ee-reqs.yml b/changelogs/fragments/719-ee-reqs.yml new file mode 100644 index 00000000..af174264 --- /dev/null +++ b/changelogs/fragments/719-ee-reqs.yml @@ -0,0 +1,2 @@ +bugfixes: + - "Execution Environment requirements - restrict Docker SDK for Python to < 7.0.0, as 7.0.0 is incompatible with docker-compose (https://github.com/ansible-collections/community.docker/pull/719)." diff --git a/meta/ee-requirements.txt b/meta/ee-requirements.txt index 52fdd017..2e33479d 100644 --- a/meta/ee-requirements.txt +++ b/meta/ee-requirements.txt @@ -1,2 +1,2 @@ -docker +docker<7.0.0 docker-compose diff --git a/tests/integration/targets/connection_docker_api/meta/main.yml b/tests/integration/targets/connection_docker_api/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/connection_docker_api/meta/main.yml +++ b/tests/integration/targets/connection_docker_api/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/connection_docker_api/setup.yml b/tests/integration/targets/connection_docker_api/setup.yml index a709d2c7..dd333705 100644 --- a/tests/integration/targets/connection_docker_api/setup.yml +++ b/tests/integration/targets/connection_docker_api/setup.yml @@ -8,3 +8,7 @@ - name: Setup docker import_role: name: setup_docker + + - name: Setup docker + import_role: + name: setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_compose/aliases b/tests/integration/targets/docker_compose/aliases index 02b78723..85687fd0 100644 --- a/tests/integration/targets/docker_compose/aliases +++ b/tests/integration/targets/docker_compose/aliases @@ -1,2 +1,2 @@ -shippable/posix/group4 +shippable/posix/group6 destructive diff --git a/tests/integration/targets/docker_compose/meta/main.yml b/tests/integration/targets/docker_compose/meta/main.yml index a033c656..f834b2fa 100644 --- a/tests/integration/targets/docker_compose/meta/main.yml +++ b/tests/integration/targets/docker_compose/meta/main.yml @@ -1,4 +1,4 @@ --- dependencies: - - setup_docker_compose + - setup_docker_compose_v1 - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_config/meta/main.yml b/tests/integration/targets/docker_config/meta/main.yml index a2419b9a..9534afb0 100644 --- a/tests/integration/targets/docker_config/meta/main.yml +++ b/tests/integration/targets/docker_config/meta/main.yml @@ -1,4 +1,5 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_container/meta/main.yml b/tests/integration/targets/docker_container/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_container/meta/main.yml +++ b/tests/integration/targets/docker_container/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_container_copy_into/meta/main.yml b/tests/integration/targets/docker_container_copy_into/meta/main.yml new file mode 100644 index 00000000..9eeb6626 --- /dev/null +++ b/tests/integration/targets/docker_container_copy_into/meta/main.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_docker + - setup_docker_sdk_for_python + - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_container_exec/meta/main.yml b/tests/integration/targets/docker_container_exec/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_container_exec/meta/main.yml +++ b/tests/integration/targets/docker_container_exec/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_container_info/meta/main.yml b/tests/integration/targets/docker_container_info/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_container_info/meta/main.yml +++ b/tests/integration/targets/docker_container_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_host_info/meta/main.yml b/tests/integration/targets/docker_host_info/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_host_info/meta/main.yml +++ b/tests/integration/targets/docker_host_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_image_info/meta/main.yml b/tests/integration/targets/docker_image_info/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_image_info/meta/main.yml +++ b/tests/integration/targets/docker_image_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_image_load/meta/main.yml b/tests/integration/targets/docker_image_load/meta/main.yml index a2419b9a..9534afb0 100644 --- a/tests/integration/targets/docker_image_load/meta/main.yml +++ b/tests/integration/targets/docker_image_load/meta/main.yml @@ -1,4 +1,5 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_network/meta/main.yml b/tests/integration/targets/docker_network/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_network/meta/main.yml +++ b/tests/integration/targets/docker_network/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_network_info/meta/main.yml b/tests/integration/targets/docker_network_info/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_network_info/meta/main.yml +++ b/tests/integration/targets/docker_network_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_node/meta/main.yml b/tests/integration/targets/docker_node/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_node/meta/main.yml +++ b/tests/integration/targets/docker_node/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_node_info/meta/main.yml b/tests/integration/targets/docker_node_info/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_node_info/meta/main.yml +++ b/tests/integration/targets/docker_node_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_plugin/meta/main.yml b/tests/integration/targets/docker_plugin/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_plugin/meta/main.yml +++ b/tests/integration/targets/docker_plugin/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_prune/meta/main.yml b/tests/integration/targets/docker_prune/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_prune/meta/main.yml +++ b/tests/integration/targets/docker_prune/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_secret/meta/main.yml b/tests/integration/targets/docker_secret/meta/main.yml index a2419b9a..9534afb0 100644 --- a/tests/integration/targets/docker_secret/meta/main.yml +++ b/tests/integration/targets/docker_secret/meta/main.yml @@ -1,4 +1,5 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_swarm/meta/main.yml b/tests/integration/targets/docker_swarm/meta/main.yml index 1257e9e0..467bee78 100644 --- a/tests/integration/targets/docker_swarm/meta/main.yml +++ b/tests/integration/targets/docker_swarm/meta/main.yml @@ -1,5 +1,6 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python - setup_openssl - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_swarm_info/meta/main.yml b/tests/integration/targets/docker_swarm_info/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_swarm_info/meta/main.yml +++ b/tests/integration/targets/docker_swarm_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_swarm_service/meta/main.yml b/tests/integration/targets/docker_swarm_service/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_swarm_service/meta/main.yml +++ b/tests/integration/targets/docker_swarm_service/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_swarm_service_info/meta/main.yml b/tests/integration/targets/docker_swarm_service_info/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_swarm_service_info/meta/main.yml +++ b/tests/integration/targets/docker_swarm_service_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_volume/meta/main.yml b/tests/integration/targets/docker_volume/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_volume/meta/main.yml +++ b/tests/integration/targets/docker_volume/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/docker_volume_info/meta/main.yml b/tests/integration/targets/docker_volume_info/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/docker_volume_info/meta/main.yml +++ b/tests/integration/targets/docker_volume_info/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/generic_connection_tests/meta/main.yml b/tests/integration/targets/generic_connection_tests/meta/main.yml new file mode 100644 index 00000000..a9fdfb11 --- /dev/null +++ b/tests/integration/targets/generic_connection_tests/meta/main.yml @@ -0,0 +1,11 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_docker + - setup_docker_sdk_for_python + - setup_docker_current_container_network_ip + - setup_openssl + - setup_remote_tmp_dir diff --git a/tests/integration/targets/generic_ssh_connection/meta/main.yml b/tests/integration/targets/generic_ssh_connection/meta/main.yml index b69559be..20f853a1 100644 --- a/tests/integration/targets/generic_ssh_connection/meta/main.yml +++ b/tests/integration/targets/generic_ssh_connection/meta/main.yml @@ -2,3 +2,4 @@ dependencies: - setup_docker - setup_paramiko + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/inventory_docker_containers/meta/main.yml b/tests/integration/targets/inventory_docker_containers/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/inventory_docker_containers/meta/main.yml +++ b/tests/integration/targets/inventory_docker_containers/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/inventory_docker_swarm/meta/main.yml b/tests/integration/targets/inventory_docker_swarm/meta/main.yml index 07da8c6d..c2484f5a 100644 --- a/tests/integration/targets/inventory_docker_swarm/meta/main.yml +++ b/tests/integration/targets/inventory_docker_swarm/meta/main.yml @@ -1,3 +1,4 @@ --- dependencies: - setup_docker + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml b/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml index 6fe0f874..304910c9 100644 --- a/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml +++ b/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml @@ -9,6 +9,10 @@ import_role: name: setup_docker + - name: Setup Docker SDK for Python + import_role: + name: setup_docker_sdk_for_python + - name: Create a Swarm cluster community.docker.docker_swarm: state: present diff --git a/tests/integration/targets/setup_docker/defaults/main.yml b/tests/integration/targets/setup_docker/defaults/main.yml index 661a309e..1c799d6d 100644 --- a/tests/integration/targets/setup_docker/defaults/main.yml +++ b/tests/integration/targets/setup_docker/defaults/main.yml @@ -1,7 +1,6 @@ --- docker_cli_version: '0.0' docker_api_version: '0.0' -docker_py_version: '0.0' docker_skip_cleanup: yes docker_prereq_packages: [] docker_packages: @@ -9,10 +8,6 @@ docker_packages: docker_cli_packages: - docker-ce-cli -docker_pip_extra_packages: [] -docker_pip_package: docker -docker_pip_package_limit: '' - docker_cleanup_packages: - docker - docker-ce diff --git a/tests/integration/targets/setup_docker/handlers/main.yml b/tests/integration/targets/setup_docker/handlers/main.yml index a389f91d..b19f2b69 100644 --- a/tests/integration/targets/setup_docker/handlers/main.yml +++ b/tests/integration/targets/setup_docker/handlers/main.yml @@ -1,10 +1,3 @@ -- name: Remove pip packages - pip: - state: present - name: "{{ [docker_pip_package] | union(docker_pip_extra_packages) }}" - listen: cleanup docker - when: not docker_skip_cleanup | bool - - name: Remove docker pagkages action: "{{ ansible_facts.pkg_mgr }}" args: diff --git a/tests/integration/targets/setup_docker/tasks/main.yml b/tests/integration/targets/setup_docker/tasks/main.yml index c7057318..0bb09314 100644 --- a/tests/integration/targets/setup_docker/tasks/main.yml +++ b/tests/integration/targets/setup_docker/tasks/main.yml @@ -64,41 +64,18 @@ register: docker_api_version_stdout ignore_errors: yes - - name: Limit docker pypi package version to < 4.3.0 - set_fact: - docker_pip_package_limit: '<4.3.0' - when: (docker_api_version_stdout.stdout | default('0.0')) is version('1.39', '<') - - - name: Install/upgrade Python requirements - pip: - name: "{{ [docker_pip_package ~ docker_pip_package_limit] + docker_pip_extra_packages }}" - extra_args: "-c {{ remote_constraints }}" - state: "{{ 'latest' if force_docker_sdk_for_python_pypi | default(false) else 'present' }}" - notify: cleanup docker - - # Detect docker CLI, API and docker-py versions + # 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 - - name: Check Docker API version - command: "{{ ansible_python.executable }} -c 'import docker; print(docker.from_env().version()[\"ApiVersion\"])'" - register: docker_api_version_stdout - ignore_errors: yes - - - name: Check docker-py API version - command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'" - register: docker_py_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') }}" - docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}" - debug: - msg: "Docker CLI version: {{ docker_cli_version }}; Docker API version: {{ docker_api_version }}; docker-py library version: {{ docker_py_version }}" + msg: "Docker CLI version: {{ docker_cli_version }}; Docker API version: {{ docker_api_version }}" - block: # Cleanup docker daemon @@ -163,13 +140,3 @@ images: "{{ docker_images.stdout_lines | default([]) }}" when: docker_cli_version is version('0.0', '>') - - - name: Inspect current container - docker_container_info: - name: "{{ ansible_module_container_id }}" - register: current_container_info - when: ansible_module_running_in_container - - - name: Determine network name - set_fact: - current_container_network_ip: "{{ (current_container_info.container.NetworkSettings.Networks | dictsort)[0].0 | default('') if ansible_module_running_in_container else '' }}" diff --git a/tests/integration/targets/setup_docker/vars/RedHat-7.yml b/tests/integration/targets/setup_docker/vars/RedHat-7.yml index 100a878d..313550c1 100644 --- a/tests/integration/targets/setup_docker/vars/RedHat-7.yml +++ b/tests/integration/targets/setup_docker/vars/RedHat-7.yml @@ -4,6 +4,3 @@ docker_prereq_packages: - device-mapper-persistent-data - lvm2 - libseccomp - -docker_pip_extra_packages: - - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml b/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml index 84130934..ed97d539 100644 --- a/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml +++ b/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml @@ -1,6 +1 @@ --- -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. - # Not sure why RHEL7 needs this specific version - - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml b/tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml deleted file mode 100644 index bc5b92ae..00000000 --- a/tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml +++ /dev/null @@ -1,2 +0,0 @@ ---- -skip_docker_compose: true diff --git a/tests/integration/targets/setup_docker_compose/defaults/main.yml b/tests/integration/targets/setup_docker_compose_v1/defaults/main.yml similarity index 56% rename from tests/integration/targets/setup_docker_compose/defaults/main.yml rename to tests/integration/targets/setup_docker_compose_v1/defaults/main.yml index 0bccf796..21a30f21 100644 --- a/tests/integration/targets/setup_docker_compose/defaults/main.yml +++ b/tests/integration/targets/setup_docker_compose_v1/defaults/main.yml @@ -1,5 +1,10 @@ --- skip_docker_compose: false + +docker_pip_extra_packages: [] +docker_pip_package: docker +docker_pip_package_limit: '<7.0.0' + docker_compose_packages: - docker-compose docker_compose_pip_packages: diff --git a/tests/integration/targets/setup_docker_compose/meta/main.yml b/tests/integration/targets/setup_docker_compose_v1/meta/main.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/meta/main.yml rename to tests/integration/targets/setup_docker_compose_v1/meta/main.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Alpine.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Alpine.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Alpine.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Alpine.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Archlinux.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Archlinux.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Archlinux.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Archlinux.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Debian.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Debian.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Debian.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Debian.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Fedora.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Fedora.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Fedora.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Fedora.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/RedHat-7.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-7.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/RedHat-7.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-7.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/RedHat-8.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-8.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/RedHat-8.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-8.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/RedHat-9.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-9.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/RedHat-9.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/RedHat-9.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/Suse.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/Suse.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/Suse.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/Suse.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/main.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/main.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/tasks/main.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/main.yml diff --git a/tests/integration/targets/setup_docker_compose/tasks/setup.yml b/tests/integration/targets/setup_docker_compose_v1/tasks/setup.yml similarity index 74% rename from tests/integration/targets/setup_docker_compose/tasks/setup.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/setup.yml index c82fb817..2336d2f2 100644 --- a/tests/integration/targets/setup_docker_compose/tasks/setup.yml +++ b/tests/integration/targets/setup_docker_compose_v1/tasks/setup.yml @@ -33,21 +33,41 @@ paths: - "{{ role_path }}/tasks" + - name: Limit docker pypi package version to < 4.3.0 + set_fact: + docker_pip_package_limit: '<4.3.0' + when: docker_api_version is version('1.39', '<') + + - name: Install/upgrade Docker SDK for Python + pip: + name: "{{ [docker_pip_package ~ docker_pip_package_limit] + docker_pip_extra_packages }}" + extra_args: "-c {{ remote_constraints }}" + state: present + - name: Install docker-compose pip: state: present name: "{{ docker_compose_pip_packages }}" extra_args: "-c {{ remote_constraints }}" + - name: Check docker-py version + command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'" + register: docker_py_version_stdout + ignore_errors: true + - name: Register docker-compose version command: "{{ ansible_python.executable }} -c 'import compose; print(compose.__version__)'" register: docker_compose_version ignore_errors: true - - name: Declare docker-compose version + - name: Declare docker-py and docker-compose version set_fact: + docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}" docker_compose_version: "{{ docker_compose_version.stdout | default('0.0.0') }}" + - debug: + msg: "Docker SDK for Python version: {{ docker_py_version }}; Docker Compose version: {{ docker_compose_version }}" + - name: Declare docker-compose as existing set_fact: has_docker_compose: true diff --git a/tests/integration/targets/setup_docker_compose/vars/Archlinux.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Archlinux.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Archlinux.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Archlinux.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/CentOS-8.yml b/tests/integration/targets/setup_docker_compose_v1/vars/CentOS-8.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/CentOS-8.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/CentOS-8.yml diff --git a/tests/integration/targets/setup_docker_compose_v1/vars/Debian-11.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Debian-11.yml new file mode 100644 index 00000000..727d541f --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/Debian-11.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_pip_extra_packages: + # https://github.com/docker/docker-py/issues/3113 + - requests<2.29.0 diff --git a/tests/integration/targets/setup_docker_compose_v1/vars/Debian-12.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Debian-12.yml new file mode 100644 index 00000000..727d541f --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/Debian-12.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_pip_extra_packages: + # https://github.com/docker/docker-py/issues/3113 + - requests<2.29.0 diff --git a/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-7.yml b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-7.yml new file mode 100644 index 00000000..8903e40d --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-7.yml @@ -0,0 +1,6 @@ +--- +skip_docker_compose: true + +docker_pip_extra_packages: + # Not sure why RHEL7 needs this specific version + - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_compose/vars/RedHat-8.yml b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-8.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/RedHat-8.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/RedHat-8.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/RedHat-9.yml b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-9.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/RedHat-9.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/RedHat-9.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/Suse-py2.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Suse-py2.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Suse-py2.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Suse-py2.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/Suse-py3.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Suse-py3.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Suse-py3.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Suse-py3.yml diff --git a/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-14.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-14.yml new file mode 100644 index 00000000..f701e1f7 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-14.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +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. + - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_compose/vars/Ubuntu-16.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-16.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Ubuntu-16.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-16.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/Ubuntu-18.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-18.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Ubuntu-18.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu-18.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/Ubuntu.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Ubuntu.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Ubuntu.yml diff --git a/tests/integration/targets/setup_docker_compose/vars/default.yml b/tests/integration/targets/setup_docker_compose_v1/vars/default.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/default.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/default.yml diff --git a/tests/integration/targets/setup_docker_current_container_network_ip/meta/main.yml b/tests/integration/targets/setup_docker_current_container_network_ip/meta/main.yml new file mode 100644 index 00000000..48b38f93 --- /dev/null +++ b/tests/integration/targets/setup_docker_current_container_network_ip/meta/main.yml @@ -0,0 +1,7 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_docker_sdk_for_python diff --git a/tests/integration/targets/setup_docker_current_container_network_ip/tasks/main.yml b/tests/integration/targets/setup_docker_current_container_network_ip/tasks/main.yml new file mode 100644 index 00000000..21ed3972 --- /dev/null +++ b/tests/integration/targets/setup_docker_current_container_network_ip/tasks/main.yml @@ -0,0 +1,25 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +#################################################################### +# 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: Inspect current container + docker_container_info: + name: "{{ ansible_module_container_id }}" + register: current_container_info + when: ansible_module_running_in_container + + - name: Determine network name + set_fact: + current_container_network_ip: "{{ (current_container_info.container.NetworkSettings.Networks | dictsort)[0].0 | default('') if ansible_module_running_in_container else '' }}" diff --git a/tests/integration/targets/setup_docker_registry/aliases b/tests/integration/targets/setup_docker_registry/aliases index 688c8884..26097932 100644 --- a/tests/integration/targets/setup_docker_registry/aliases +++ b/tests/integration/targets/setup_docker_registry/aliases @@ -1,2 +1,3 @@ needs/target/setup_docker +needs/target/setup_docker_current_container_network_ip needs/target/setup_openssl diff --git a/tests/integration/targets/setup_docker_registry/meta/main.yml b/tests/integration/targets/setup_docker_registry/meta/main.yml index 2d30cdf9..af9bef7d 100644 --- a/tests/integration/targets/setup_docker_registry/meta/main.yml +++ b/tests/integration/targets/setup_docker_registry/meta/main.yml @@ -1,4 +1,6 @@ dependencies: #- setup_docker -- done in setup.yml, to work around cleanup problems! + #- setup_docker_sdk_for_python + #- setup_docker_current_container_network_ip - setup_openssl - setup_remote_tmp_dir diff --git a/tests/integration/targets/setup_docker_registry/tasks/setup.yml b/tests/integration/targets/setup_docker_registry/tasks/setup.yml index 7962fbee..2c170ec9 100644 --- a/tests/integration/targets/setup_docker_registry/tasks/setup.yml +++ b/tests/integration/targets/setup_docker_registry/tasks/setup.yml @@ -12,6 +12,14 @@ include_role: name: setup_docker +- name: Setup Docker SDK for Python + include_role: + name: setup_docker_sdk_for_python + +- name: Figure out current container's network IP + include_role: + name: setup_docker_current_container_network_ip + - name: Create random name prefix and test registry name set_fact: docker_registry_container_name_registry: '{{ ''ansible-docker-test-registry-%0x'' % ((2**32) | random) }}' diff --git a/tests/integration/targets/setup_docker_sdk_for_python/aliases b/tests/integration/targets/setup_docker_sdk_for_python/aliases new file mode 100644 index 00000000..0a430dff --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/aliases @@ -0,0 +1,5 @@ +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +needs/target/setup_epel diff --git a/tests/integration/targets/setup_docker_sdk_for_python/defaults/main.yml b/tests/integration/targets/setup_docker_sdk_for_python/defaults/main.yml new file mode 100644 index 00000000..29a257f8 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/defaults/main.yml @@ -0,0 +1,10 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_py_version: '0.0' + +docker_pip_extra_packages: [] +docker_pip_package: docker +docker_pip_package_limit: '' diff --git a/tests/integration/targets/setup_docker_sdk_for_python/meta/main.yml b/tests/integration/targets/setup_docker_sdk_for_python/meta/main.yml new file mode 100644 index 00000000..d4a5c7d0 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/meta/main.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_remote_constraints + - setup_pkg_mgr diff --git a/tests/integration/targets/setup_docker_sdk_for_python/tasks/main.yml b/tests/integration/targets/setup_docker_sdk_for_python/tasks/main.yml new file mode 100644 index 00000000..91cd5fcb --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/tasks/main.yml @@ -0,0 +1,47 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +#################################################################### +# WARNING: These are designed specifically for Ansible tests # +# and should not be used as examples of how to write Ansible roles # +#################################################################### + +- name: Setup Docker SDK for Python + when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6'] + block: + - 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: Limit docker pypi package version to < 4.3.0 + set_fact: + docker_pip_package_limit: '<4.3.0' + when: docker_api_version is version('1.39', '<') + + - name: Install/upgrade Python requirements + pip: + name: "{{ [docker_pip_package ~ docker_pip_package_limit] + docker_pip_extra_packages }}" + extra_args: "-c {{ remote_constraints }}" + state: "{{ 'latest' if force_docker_sdk_for_python_pypi | default(false) else 'present' }}" + + - name: Check docker-py version + command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'" + register: docker_py_version_stdout + ignore_errors: true + + - set_fact: + docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}" + + - debug: + msg: "Docker SDK for Python version: {{ docker_py_version }}" diff --git a/tests/integration/targets/setup_docker_sdk_for_python/vars/RedHat-7.yml b/tests/integration/targets/setup_docker_sdk_for_python/vars/RedHat-7.yml new file mode 100644 index 00000000..9fa5efa5 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/vars/RedHat-7.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_pip_extra_packages: + # Not sure why RHEL7 needs this specific version + - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_sdk_for_python/vars/Ubuntu-14.yml b/tests/integration/targets/setup_docker_sdk_for_python/vars/Ubuntu-14.yml new file mode 100644 index 00000000..f701e1f7 --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/vars/Ubuntu-14.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +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. + - requests==2.6.0 diff --git a/tests/integration/targets/setup_docker_sdk_for_python/vars/default.yml b/tests/integration/targets/setup_docker_sdk_for_python/vars/default.yml new file mode 100644 index 00000000..f55df21f --- /dev/null +++ b/tests/integration/targets/setup_docker_sdk_for_python/vars/default.yml @@ -0,0 +1,4 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later