diff --git a/.azure-pipelines/azure-pipelines.yml b/.azure-pipelines/azure-pipelines.yml index 40a5490c..b54ccc14 100644 --- a/.azure-pipelines/azure-pipelines.yml +++ b/.azure-pipelines/azure-pipelines.yml @@ -120,6 +120,7 @@ stages: groups: - 4 - 5 + - 6 - stage: Docker_2_16 displayName: Docker 2.16 dependsOn: [] @@ -137,6 +138,7 @@ stages: groups: - 4 - 5 + - 6 - stage: Docker_2_15 displayName: Docker 2.15 dependsOn: [] @@ -152,6 +154,7 @@ stages: groups: - 4 - 5 + - 6 - stage: Docker_2_14 displayName: Docker 2.14 dependsOn: [] @@ -165,6 +168,7 @@ stages: groups: - 4 - 5 + - 6 ### Community Docker - stage: Docker_community_devel @@ -184,6 +188,7 @@ stages: groups: - 4 - 5 + - 6 ### Remote - stage: Remote_devel @@ -205,6 +210,7 @@ stages: - 3 - 4 - 5 + - 6 - stage: Remote_2_16 displayName: Remote 2.16 dependsOn: [] diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml index 366ccdac..1d7da1da 100644 --- a/.github/workflows/ansible-test.yml +++ b/.github/workflows/ansible-test.yml @@ -121,6 +121,10 @@ jobs: docker: fedora32 python: '' target: azp/5/ + - ansible: '2.11' + docker: fedora32 + python: '' + target: azp/6/ - ansible: '2.11' docker: alpine3 python: '' @@ -130,6 +134,10 @@ jobs: docker: alpine3 python: '' target: azp/5/ + - ansible: '2.11' + docker: alpine3 + python: '' + target: azp/6/ # 2.12 - ansible: '2.12' docker: fedora33 @@ -139,6 +147,10 @@ jobs: docker: fedora33 python: '' target: azp/5/ + - ansible: '2.12' + docker: fedora33 + python: '' + target: azp/6/ - ansible: '2.12' docker: fedora34 python: '' @@ -147,6 +159,10 @@ jobs: docker: fedora34 python: '' target: azp/5/ + - ansible: '2.12' + docker: fedora34 + python: '' + target: azp/6/ - ansible: '2.12' docker: ubuntu1804 python: '' @@ -155,6 +171,10 @@ jobs: docker: ubuntu1804 python: '' target: azp/5/ + - ansible: '2.12' + docker: ubuntu1804 + python: '' + target: azp/6/ # 2.13 - ansible: '2.13' docker: fedora35 @@ -164,6 +184,10 @@ jobs: docker: fedora35 python: '' target: azp/5/ + - ansible: '2.13' + docker: fedora35 + python: '' + target: azp/6/ - ansible: '2.13' docker: opensuse15py2 python: '' @@ -172,6 +196,10 @@ jobs: docker: opensuse15py2 python: '' target: azp/5/ + - ansible: '2.13' + docker: opensuse15py2 + python: '' + target: azp/6/ - ansible: '2.13' docker: alpine3 python: '' @@ -180,6 +208,10 @@ jobs: docker: alpine3 python: '' target: azp/5/ + - ansible: '2.13' + docker: alpine3 + python: '' + target: azp/6/ steps: - name: >- diff --git a/tests/integration/targets/connection_docker_api/meta/main.yml b/tests/integration/targets/connection_docker_api/meta/main.yml index 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/connection_docker_api/meta/main.yml +++ b/tests/integration/targets/connection_docker_api/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/connection_docker_api/setup.yml b/tests/integration/targets/connection_docker_api/setup.yml index e522a51f..860045e0 100644 --- a/tests/integration/targets/connection_docker_api/setup.yml +++ b/tests/integration/targets/connection_docker_api/setup.yml @@ -12,3 +12,7 @@ - name: Setup docker import_role: name: setup_docker + + - name: Setup docker + import_role: + name: setup_docker_python_deps diff --git a/tests/integration/targets/docker_compose/aliases b/tests/integration/targets/docker_compose/aliases index 2e1acc0a..d8f457d5 100644 --- a/tests/integration/targets/docker_compose/aliases +++ b/tests/integration/targets/docker_compose/aliases @@ -2,5 +2,5 @@ # 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 -azp/4 +azp/6 destructive diff --git a/tests/integration/targets/docker_compose/meta/main.yml b/tests/integration/targets/docker_compose/meta/main.yml index 7f44c871..6b423221 100644 --- a/tests/integration/targets/docker_compose/meta/main.yml +++ b/tests/integration/targets/docker_compose/meta/main.yml @@ -4,5 +4,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later 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 2650229d..9eeb6626 100644 --- a/tests/integration/targets/docker_config/meta/main.yml +++ b/tests/integration/targets/docker_config/meta/main.yml @@ -5,4 +5,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 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_container/meta/main.yml +++ b/tests/integration/targets/docker_container/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_container_copy_into/meta/main.yml b/tests/integration/targets/docker_container_copy_into/meta/main.yml index 2650229d..f5b89789 100644 --- a/tests/integration/targets/docker_container_copy_into/meta/main.yml +++ b/tests/integration/targets/docker_container_copy_into/meta/main.yml @@ -5,4 +5,5 @@ dependencies: - setup_docker + - setup_docker_python_deps - 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 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_container_exec/meta/main.yml +++ b/tests/integration/targets/docker_container_exec/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_container_info/meta/main.yml b/tests/integration/targets/docker_container_info/meta/main.yml index 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_container_info/meta/main.yml +++ b/tests/integration/targets/docker_container_info/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_host_info/meta/main.yml b/tests/integration/targets/docker_host_info/meta/main.yml index 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_host_info/meta/main.yml +++ b/tests/integration/targets/docker_host_info/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_image/meta/main.yml b/tests/integration/targets/docker_image/meta/main.yml index f7ba9ab1..511f9e41 100644 --- a/tests/integration/targets/docker_image/meta/main.yml +++ b/tests/integration/targets/docker_image/meta/main.yml @@ -5,4 +5,5 @@ dependencies: - setup_docker_registry + - setup_docker_python_deps - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_image_info/meta/main.yml b/tests/integration/targets/docker_image_info/meta/main.yml index 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_image_info/meta/main.yml +++ b/tests/integration/targets/docker_image_info/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_image_load/meta/main.yml b/tests/integration/targets/docker_image_load/meta/main.yml index 2650229d..f5b89789 100644 --- a/tests/integration/targets/docker_image_load/meta/main.yml +++ b/tests/integration/targets/docker_image_load/meta/main.yml @@ -5,4 +5,5 @@ dependencies: - setup_docker + - setup_docker_python_deps - setup_remote_tmp_dir diff --git a/tests/integration/targets/docker_login/meta/main.yml b/tests/integration/targets/docker_login/meta/main.yml index 3133a036..ff316450 100644 --- a/tests/integration/targets/docker_login/meta/main.yml +++ b/tests/integration/targets/docker_login/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker_registry + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_network/meta/main.yml b/tests/integration/targets/docker_network/meta/main.yml index 5769ff1c..44bdbe8d 100644 --- a/tests/integration/targets/docker_network/meta/main.yml +++ b/tests/integration/targets/docker_network/meta/main.yml @@ -5,3 +5,5 @@ dependencies: - setup_docker + - setup_docker_python_deps + - setup_docker_sdk_for_python # for Swarm support diff --git a/tests/integration/targets/docker_network_info/meta/main.yml b/tests/integration/targets/docker_network_info/meta/main.yml index 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_network_info/meta/main.yml +++ b/tests/integration/targets/docker_network_info/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_node/meta/main.yml b/tests/integration/targets/docker_node/meta/main.yml index 5769ff1c..6407d95b 100644 --- a/tests/integration/targets/docker_node/meta/main.yml +++ b/tests/integration/targets/docker_node/meta/main.yml @@ -5,3 +5,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 5769ff1c..6407d95b 100644 --- a/tests/integration/targets/docker_node_info/meta/main.yml +++ b/tests/integration/targets/docker_node_info/meta/main.yml @@ -5,3 +5,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 5769ff1c..6407d95b 100644 --- a/tests/integration/targets/docker_plugin/meta/main.yml +++ b/tests/integration/targets/docker_plugin/meta/main.yml @@ -5,3 +5,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 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_prune/meta/main.yml +++ b/tests/integration/targets/docker_prune/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_secret/meta/main.yml b/tests/integration/targets/docker_secret/meta/main.yml index 2650229d..9eeb6626 100644 --- a/tests/integration/targets/docker_secret/meta/main.yml +++ b/tests/integration/targets/docker_secret/meta/main.yml @@ -5,4 +5,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 e7ff3d68..13f97ae2 100644 --- a/tests/integration/targets/docker_swarm/meta/main.yml +++ b/tests/integration/targets/docker_swarm/meta/main.yml @@ -5,5 +5,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 5769ff1c..6407d95b 100644 --- a/tests/integration/targets/docker_swarm_info/meta/main.yml +++ b/tests/integration/targets/docker_swarm_info/meta/main.yml @@ -5,3 +5,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 5769ff1c..6407d95b 100644 --- a/tests/integration/targets/docker_swarm_service/meta/main.yml +++ b/tests/integration/targets/docker_swarm_service/meta/main.yml @@ -5,3 +5,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 5769ff1c..6407d95b 100644 --- a/tests/integration/targets/docker_swarm_service_info/meta/main.yml +++ b/tests/integration/targets/docker_swarm_service_info/meta/main.yml @@ -5,3 +5,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 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_volume/meta/main.yml +++ b/tests/integration/targets/docker_volume/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/docker_volume_info/meta/main.yml b/tests/integration/targets/docker_volume_info/meta/main.yml index 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/docker_volume_info/meta/main.yml +++ b/tests/integration/targets/docker_volume_info/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/generic_connection_tests/meta/main.yml b/tests/integration/targets/generic_connection_tests/meta/main.yml index e7ff3d68..7440275b 100644 --- a/tests/integration/targets/generic_connection_tests/meta/main.yml +++ b/tests/integration/targets/generic_connection_tests/meta/main.yml @@ -5,5 +5,7 @@ dependencies: - setup_docker + - setup_docker_python_deps + - 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 6fdc1c8e..ee4a358c 100644 --- a/tests/integration/targets/generic_ssh_connection/meta/main.yml +++ b/tests/integration/targets/generic_ssh_connection/meta/main.yml @@ -6,3 +6,4 @@ dependencies: - setup_docker - setup_paramiko + - setup_docker_python_deps diff --git a/tests/integration/targets/generic_ssh_connection/tasks/main.yml b/tests/integration/targets/generic_ssh_connection/tasks/main.yml index 94554f71..8bfa5251 100644 --- a/tests/integration/targets/generic_ssh_connection/tasks/main.yml +++ b/tests/integration/targets/generic_ssh_connection/tasks/main.yml @@ -68,7 +68,6 @@ docker_host: "ssh://root@localhost" use_ssh_client: true register: output - ignore_errors: true - name: Make sure we got information assert: @@ -80,11 +79,3 @@ - 'output.volumes is not defined' - 'output.images is not defined' - 'output.disk_usage is not defined' - when: docker_py_version is version('4.4.0', '>=') - -- name: Make sure we got information - assert: - that: - - output is failed - - "'use_ssh_client=True requires Docker SDK for Python 4.4.0 or newer' in output.msg" - when: docker_py_version is version('4.4.0', '<') diff --git a/tests/integration/targets/inventory_docker_containers/meta/main.yml b/tests/integration/targets/inventory_docker_containers/meta/main.yml index 5769ff1c..471ddd41 100644 --- a/tests/integration/targets/inventory_docker_containers/meta/main.yml +++ b/tests/integration/targets/inventory_docker_containers/meta/main.yml @@ -5,3 +5,4 @@ dependencies: - setup_docker + - setup_docker_python_deps diff --git a/tests/integration/targets/inventory_docker_swarm/meta/main.yml b/tests/integration/targets/inventory_docker_swarm/meta/main.yml index 5769ff1c..6407d95b 100644 --- a/tests/integration/targets/inventory_docker_swarm/meta/main.yml +++ b/tests/integration/targets/inventory_docker_swarm/meta/main.yml @@ -5,3 +5,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 1ae4c63f..9dd43dd2 100644 --- a/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml +++ b/tests/integration/targets/inventory_docker_swarm/playbooks/swarm_setup.yml @@ -13,6 +13,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 0509fe0e..412fc564 100644 --- a/tests/integration/targets/setup_docker/defaults/main.yml +++ b/tests/integration/targets/setup_docker/defaults/main.yml @@ -5,7 +5,6 @@ docker_cli_version: '0.0' docker_api_version: '0.0' -docker_py_version: '0.0' docker_skip_cleanup: true docker_prereq_packages: [] docker_packages: @@ -13,10 +12,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 96ca226c..ec68f655 100644 --- a/tests/integration/targets/setup_docker/handlers/main.yml +++ b/tests/integration/targets/setup_docker/handlers/main.yml @@ -3,13 +3,6 @@ # 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 -- 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 e8f078d3..28b65ec3 100644 --- a/tests/integration/targets/setup_docker/tasks/main.yml +++ b/tests/integration/targets/setup_docker/tasks/main.yml @@ -68,36 +68,18 @@ register: docker_api_version_stdout ignore_errors: true - - 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 and docker-py versions - name: Check Docker CLI version command: "docker version -f {% raw %}'{{.Client.Version}}'{% endraw %}" register: docker_cli_version_stdout ignore_errors: true - - 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_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 @@ -162,13 +144,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 b1e28987..bbf9ed32 100644 --- a/tests/integration/targets/setup_docker/vars/RedHat-7.yml +++ b/tests/integration/targets/setup_docker/vars/RedHat-7.yml @@ -8,6 +8,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 d7c82455..f55df21f 100644 --- a/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml +++ b/tests/integration/targets/setup_docker/vars/Ubuntu-14.yml @@ -2,9 +2,3 @@ # 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. - # Not sure why RHEL7 needs this specific version - - requests==2.6.0 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 77% rename from tests/integration/targets/setup_docker_compose/defaults/main.yml rename to tests/integration/targets/setup_docker_compose_v1/defaults/main.yml index f701c90e..0ebf5269 100644 --- a/tests/integration/targets/setup_docker_compose/defaults/main.yml +++ b/tests/integration/targets/setup_docker_compose_v1/defaults/main.yml @@ -4,6 +4,11 @@ # SPDX-License-Identifier: GPL-3.0-or-later 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 75% rename from tests/integration/targets/setup_docker_compose/tasks/setup.yml rename to tests/integration/targets/setup_docker_compose_v1/tasks/setup.yml index 08c68a89..0db7293d 100644 --- a/tests/integration/targets/setup_docker_compose/tasks/setup.yml +++ b/tests/integration/targets/setup_docker_compose_v1/tasks/setup.yml @@ -37,21 +37,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/Alpine.yml b/tests/integration/targets/setup_docker_compose_v1/vars/Alpine.yml similarity index 100% rename from tests/integration/targets/setup_docker_compose/vars/Alpine.yml rename to tests/integration/targets/setup_docker_compose_v1/vars/Alpine.yml 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..99b27c1c --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v1/vars/RedHat-7.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 + +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..2a770b72 --- /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_python_deps 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_python_deps/aliases b/tests/integration/targets/setup_docker_python_deps/aliases new file mode 100644 index 00000000..0a430dff --- /dev/null +++ b/tests/integration/targets/setup_docker_python_deps/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_python_deps/defaults/main.yml b/tests/integration/targets/setup_docker_python_deps/defaults/main.yml new file mode 100644 index 00000000..cd11129e --- /dev/null +++ b/tests/integration/targets/setup_docker_python_deps/defaults/main.yml @@ -0,0 +1,12 @@ +--- +# 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_api_packages: + - requests + # - paramiko + # - pyOpenSSL + +docker_pip_api_packages_python2: + - backports.ssl-match-hostname diff --git a/tests/integration/targets/setup_docker_python_deps/meta/main.yml b/tests/integration/targets/setup_docker_python_deps/meta/main.yml new file mode 100644 index 00000000..d4a5c7d0 --- /dev/null +++ b/tests/integration/targets/setup_docker_python_deps/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_python_deps/tasks/main.yml b/tests/integration/targets/setup_docker_python_deps/tasks/main.yml new file mode 100644 index 00000000..67c2651d --- /dev/null +++ b/tests/integration/targets/setup_docker_python_deps/tasks/main.yml @@ -0,0 +1,15 @@ +--- +# 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: Install/upgrade Python requirements + pip: + name: "{{ docker_pip_api_packages + (docker_pip_api_packages_python2 if ansible_facts.python.version.major == 2 else []) }}" + extra_args: "-c {{ remote_constraints }}" + state: present diff --git a/tests/integration/targets/setup_docker_python_deps/vars/RedHat-7.yml b/tests/integration/targets/setup_docker_python_deps/vars/RedHat-7.yml new file mode 100644 index 00000000..ff572017 --- /dev/null +++ b/tests/integration/targets/setup_docker_python_deps/vars/RedHat-7.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_pip_api_packages: + # Not sure why RHEL7 needs this specific version of requests + - requests==2.6.0 + # - paramiko + # - pyOpenSSL diff --git a/tests/integration/targets/setup_docker_python_deps/vars/Ubuntu-14.yml b/tests/integration/targets/setup_docker_python_deps/vars/Ubuntu-14.yml new file mode 100644 index 00000000..41a8bceb --- /dev/null +++ b/tests/integration/targets/setup_docker_python_deps/vars/Ubuntu-14.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 + +docker_pip_api_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 + # - paramiko + # - pyOpenSSL diff --git a/tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml b/tests/integration/targets/setup_docker_python_deps/vars/default.yml similarity index 87% rename from tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml rename to tests/integration/targets/setup_docker_python_deps/vars/default.yml index c5d18002..f55df21f 100644 --- a/tests/integration/targets/setup_docker_compose/vars/RedHat-7.yml +++ b/tests/integration/targets/setup_docker_python_deps/vars/default.yml @@ -2,5 +2,3 @@ # 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 - -skip_docker_compose: true diff --git a/tests/integration/targets/setup_docker_registry/aliases b/tests/integration/targets/setup_docker_registry/aliases index 357972ff..e1026a83 100644 --- a/tests/integration/targets/setup_docker_registry/aliases +++ b/tests/integration/targets/setup_docker_registry/aliases @@ -3,4 +3,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later 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 4ab14ed1..f13fc1ad 100644 --- a/tests/integration/targets/setup_docker_registry/meta/main.yml +++ b/tests/integration/targets/setup_docker_registry/meta/main.yml @@ -5,5 +5,7 @@ dependencies: #- setup_docker -- done in setup.yml, to work around cleanup problems! + #- setup_docker_current_container_network_ip + - setup_docker_python_deps - 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 b3a8662e..454c6604 100644 --- a/tests/integration/targets/setup_docker_registry/tasks/setup.yml +++ b/tests/integration/targets/setup_docker_registry/tasks/setup.yml @@ -16,6 +16,10 @@ include_role: name: setup_docker +- 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) }}' @@ -36,10 +40,10 @@ - debug: msg: Using test registry name {{ docker_registry_container_name_registry }} and nginx frontend names {{ docker_registry_container_name_nginx }} and {{ docker_registry_container_name_nginx2 }} -- fail: msg="Too old docker / docker-py version to set up docker registry!" - when: not(docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6) +- fail: msg="Too old docker version to set up docker registry!" + when: not(docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6) -- when: docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.25', '>=') +- when: docker_api_version is version('1.25', '>=') block: # Set up registry container 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