Integration tests: split up Docker setup, move docker_compose tests into own group (#718)

* Rename setup role.

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

* Split up Docker setup in integration tests.

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

* Docker SDK for Python not needed to set up registry or query host info.
This commit is contained in:
Felix Fontein 2023-12-09 17:35:54 +01:00 committed by GitHub
parent 80e39f84d8
commit 4929ef603a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
86 changed files with 334 additions and 67 deletions

View File

@ -120,6 +120,7 @@ stages:
groups: groups:
- 4 - 4
- 5 - 5
- 6
- stage: Docker_2_16 - stage: Docker_2_16
displayName: Docker 2.16 displayName: Docker 2.16
dependsOn: [] dependsOn: []
@ -137,6 +138,7 @@ stages:
groups: groups:
- 4 - 4
- 5 - 5
- 6
- stage: Docker_2_15 - stage: Docker_2_15
displayName: Docker 2.15 displayName: Docker 2.15
dependsOn: [] dependsOn: []
@ -152,6 +154,7 @@ stages:
groups: groups:
- 4 - 4
- 5 - 5
- 6
- stage: Docker_2_14 - stage: Docker_2_14
displayName: Docker 2.14 displayName: Docker 2.14
dependsOn: [] dependsOn: []
@ -165,6 +168,7 @@ stages:
groups: groups:
- 4 - 4
- 5 - 5
- 6
### Community Docker ### Community Docker
- stage: Docker_community_devel - stage: Docker_community_devel
@ -184,6 +188,7 @@ stages:
groups: groups:
- 4 - 4
- 5 - 5
- 6
### Remote ### Remote
- stage: Remote_devel - stage: Remote_devel
@ -205,6 +210,7 @@ stages:
- 3 - 3
- 4 - 4
- 5 - 5
- 6
- stage: Remote_2_16 - stage: Remote_2_16
displayName: Remote 2.16 displayName: Remote 2.16
dependsOn: [] dependsOn: []

View File

@ -121,6 +121,10 @@ jobs:
docker: fedora32 docker: fedora32
python: '' python: ''
target: azp/5/ target: azp/5/
- ansible: '2.11'
docker: fedora32
python: ''
target: azp/6/
- ansible: '2.11' - ansible: '2.11'
docker: alpine3 docker: alpine3
python: '' python: ''
@ -130,6 +134,10 @@ jobs:
docker: alpine3 docker: alpine3
python: '' python: ''
target: azp/5/ target: azp/5/
- ansible: '2.11'
docker: alpine3
python: ''
target: azp/6/
# 2.12 # 2.12
- ansible: '2.12' - ansible: '2.12'
docker: fedora33 docker: fedora33
@ -139,6 +147,10 @@ jobs:
docker: fedora33 docker: fedora33
python: '' python: ''
target: azp/5/ target: azp/5/
- ansible: '2.12'
docker: fedora33
python: ''
target: azp/6/
- ansible: '2.12' - ansible: '2.12'
docker: fedora34 docker: fedora34
python: '' python: ''
@ -147,6 +159,10 @@ jobs:
docker: fedora34 docker: fedora34
python: '' python: ''
target: azp/5/ target: azp/5/
- ansible: '2.12'
docker: fedora34
python: ''
target: azp/6/
- ansible: '2.12' - ansible: '2.12'
docker: ubuntu1804 docker: ubuntu1804
python: '' python: ''
@ -155,6 +171,10 @@ jobs:
docker: ubuntu1804 docker: ubuntu1804
python: '' python: ''
target: azp/5/ target: azp/5/
- ansible: '2.12'
docker: ubuntu1804
python: ''
target: azp/6/
# 2.13 # 2.13
- ansible: '2.13' - ansible: '2.13'
docker: fedora35 docker: fedora35
@ -164,6 +184,10 @@ jobs:
docker: fedora35 docker: fedora35
python: '' python: ''
target: azp/5/ target: azp/5/
- ansible: '2.13'
docker: fedora35
python: ''
target: azp/6/
- ansible: '2.13' - ansible: '2.13'
docker: opensuse15py2 docker: opensuse15py2
python: '' python: ''
@ -172,6 +196,10 @@ jobs:
docker: opensuse15py2 docker: opensuse15py2
python: '' python: ''
target: azp/5/ target: azp/5/
- ansible: '2.13'
docker: opensuse15py2
python: ''
target: azp/6/
- ansible: '2.13' - ansible: '2.13'
docker: alpine3 docker: alpine3
python: '' python: ''
@ -180,6 +208,10 @@ jobs:
docker: alpine3 docker: alpine3
python: '' python: ''
target: azp/5/ target: azp/5/
- ansible: '2.13'
docker: alpine3
python: ''
target: azp/6/
steps: steps:
- name: >- - name: >-

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -12,3 +12,7 @@
- name: Setup docker - name: Setup docker
import_role: import_role:
name: setup_docker name: setup_docker
- name: Setup docker
import_role:
name: setup_docker_python_deps

View File

@ -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) # 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 # SPDX-License-Identifier: GPL-3.0-or-later
azp/4 azp/6
destructive destructive

View File

@ -4,5 +4,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
dependencies: dependencies:
- setup_docker_compose - setup_docker_compose_v1
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -5,4 +5,5 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,4 +5,5 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,4 +5,5 @@
dependencies: dependencies:
- setup_docker_registry - setup_docker_registry
- setup_docker_python_deps
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,4 +5,5 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker_registry - setup_docker_registry
- setup_docker_python_deps

View File

@ -5,3 +5,5 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps
- setup_docker_sdk_for_python # for Swarm support

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,4 +5,5 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -5,5 +5,6 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python
- setup_openssl - setup_openssl
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,5 +5,7 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps
- setup_docker_current_container_network_ip
- setup_openssl - setup_openssl
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -6,3 +6,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_paramiko - setup_paramiko
- setup_docker_python_deps

View File

@ -68,7 +68,6 @@
docker_host: "ssh://root@localhost" docker_host: "ssh://root@localhost"
use_ssh_client: true use_ssh_client: true
register: output register: output
ignore_errors: true
- name: Make sure we got information - name: Make sure we got information
assert: assert:
@ -80,11 +79,3 @@
- 'output.volumes is not defined' - 'output.volumes is not defined'
- 'output.images is not defined' - 'output.images is not defined'
- 'output.disk_usage 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', '<')

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_python_deps

View File

@ -5,3 +5,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_docker_sdk_for_python

View File

@ -13,6 +13,10 @@
import_role: import_role:
name: setup_docker name: setup_docker
- name: Setup Docker SDK for Python
import_role:
name: setup_docker_sdk_for_python
- name: Create a Swarm cluster - name: Create a Swarm cluster
community.docker.docker_swarm: community.docker.docker_swarm:
state: present state: present

View File

@ -5,7 +5,6 @@
docker_cli_version: '0.0' docker_cli_version: '0.0'
docker_api_version: '0.0' docker_api_version: '0.0'
docker_py_version: '0.0'
docker_skip_cleanup: true docker_skip_cleanup: true
docker_prereq_packages: [] docker_prereq_packages: []
docker_packages: docker_packages:
@ -13,10 +12,6 @@ docker_packages:
docker_cli_packages: docker_cli_packages:
- docker-ce-cli - docker-ce-cli
docker_pip_extra_packages: []
docker_pip_package: docker
docker_pip_package_limit: ''
docker_cleanup_packages: docker_cleanup_packages:
- docker - docker
- docker-ce - docker-ce

View File

@ -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) # 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 # 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 - name: Remove docker pagkages
action: "{{ ansible_facts.pkg_mgr }}" action: "{{ ansible_facts.pkg_mgr }}"
args: args:

View File

@ -68,36 +68,18 @@
register: docker_api_version_stdout register: docker_api_version_stdout
ignore_errors: true 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 # Detect docker CLI and docker-py versions
- name: Check Docker CLI version - name: Check Docker CLI version
command: "docker version -f {% raw %}'{{.Client.Version}}'{% endraw %}" command: "docker version -f {% raw %}'{{.Client.Version}}'{% endraw %}"
register: docker_cli_version_stdout register: docker_cli_version_stdout
ignore_errors: true 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: - set_fact:
docker_cli_version: "{{ docker_cli_version_stdout.stdout | default('0.0') }}" docker_cli_version: "{{ docker_cli_version_stdout.stdout | default('0.0') }}"
docker_api_version: "{{ docker_api_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: - 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: - block:
# Cleanup docker daemon # Cleanup docker daemon
@ -162,13 +144,3 @@
images: "{{ docker_images.stdout_lines | default([]) }}" images: "{{ docker_images.stdout_lines | default([]) }}"
when: docker_cli_version is version('0.0', '>') 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 '' }}"

View File

@ -8,6 +8,3 @@ docker_prereq_packages:
- device-mapper-persistent-data - device-mapper-persistent-data
- lvm2 - lvm2
- libseccomp - libseccomp
docker_pip_extra_packages:
- requests==2.6.0

View File

@ -2,9 +2,3 @@
# Copyright (c) Ansible Project # 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) # 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 # 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

View File

@ -4,6 +4,11 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
skip_docker_compose: false skip_docker_compose: false
docker_pip_extra_packages: []
docker_pip_package: docker
docker_pip_package_limit: '<7.0.0'
docker_compose_packages: docker_compose_packages:
- docker-compose - docker-compose
docker_compose_pip_packages: docker_compose_pip_packages:

View File

@ -37,21 +37,41 @@
paths: paths:
- "{{ role_path }}/tasks" - "{{ 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 - name: Install docker-compose
pip: pip:
state: present state: present
name: "{{ docker_compose_pip_packages }}" name: "{{ docker_compose_pip_packages }}"
extra_args: "-c {{ remote_constraints }}" 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 - name: Register docker-compose version
command: "{{ ansible_python.executable }} -c 'import compose; print(compose.__version__)'" command: "{{ ansible_python.executable }} -c 'import compose; print(compose.__version__)'"
register: docker_compose_version register: docker_compose_version
ignore_errors: true ignore_errors: true
- name: Declare docker-compose version - name: Declare docker-py and docker-compose version
set_fact: set_fact:
docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}"
docker_compose_version: "{{ docker_compose_version.stdout | default('0.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 - name: Declare docker-compose as existing
set_fact: set_fact:
has_docker_compose: true has_docker_compose: true

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 '' }}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -2,5 +2,3 @@
# Copyright (c) Ansible Project # 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) # 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 # SPDX-License-Identifier: GPL-3.0-or-later
skip_docker_compose: true

View File

@ -3,4 +3,5 @@
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
needs/target/setup_docker needs/target/setup_docker
needs/target/setup_docker_current_container_network_ip
needs/target/setup_openssl needs/target/setup_openssl

View File

@ -5,5 +5,7 @@
dependencies: dependencies:
#- setup_docker -- done in setup.yml, to work around cleanup problems! #- setup_docker -- done in setup.yml, to work around cleanup problems!
#- setup_docker_current_container_network_ip
- setup_docker_python_deps
- setup_openssl - setup_openssl
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -16,6 +16,10 @@
include_role: include_role:
name: setup_docker 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 - name: Create random name prefix and test registry name
set_fact: set_fact:
docker_registry_container_name_registry: '{{ ''ansible-docker-test-registry-%0x'' % ((2**32) | random) }}' docker_registry_container_name_registry: '{{ ''ansible-docker-test-registry-%0x'' % ((2**32) | random) }}'
@ -36,10 +40,10 @@
- debug: - 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 }} 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!" - fail: msg="Too old docker 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) 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: block:
# Set up registry container # Set up registry container

View File

@ -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

View File

@ -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: ''

View File

@ -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

View File

@ -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 }}"

View File

@ -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

View File

@ -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

View File

@ -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