[stable-2] Integration tests: split up Docker setup, move docker_compose tests into own group (#719)

* Rename setup role.

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

* Split up Docker setup in integration tests.

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

* Restrict Docker SDK for Python to < 7.0.0 in EE.
This commit is contained in:
Felix Fontein 2023-12-09 18:38:54 +01:00 committed by GitHub
parent 4e172e3111
commit 1e286852b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
78 changed files with 301 additions and 61 deletions

View File

@ -84,6 +84,7 @@ stages:
groups: groups:
- 4 - 4
- 5 - 5
- 6
### Community Docker ### Community Docker
- stage: Docker_community_2_14 - stage: Docker_community_2_14
@ -103,6 +104,7 @@ stages:
groups: groups:
- 4 - 4
- 5 - 5
- 6
### Remote ### Remote
- stage: Remote_2_14 - stage: Remote_2_14
@ -122,6 +124,7 @@ stages:
- 3 - 3
- 4 - 4
- 5 - 5
- 6
## Finally ## Finally

View File

@ -114,6 +114,10 @@ jobs:
docker: fedora31 docker: fedora31
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.9'
docker: fedora31
python: ''
target: shippable/posix/group6/
# 2.10 # 2.10
- ansible: '2.10' - ansible: '2.10'
docker: fedora32 docker: fedora32
@ -123,6 +127,10 @@ jobs:
docker: fedora32 docker: fedora32
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.10'
docker: fedora32
python: ''
target: shippable/posix/group6/
- ansible: '2.10' - ansible: '2.10'
docker: ubuntu1604 docker: ubuntu1604
python: '' python: ''
@ -131,6 +139,10 @@ jobs:
docker: ubuntu1604 docker: ubuntu1604
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.10'
docker: ubuntu1604
python: ''
target: shippable/posix/group6/
# 2.11 # 2.11
- ansible: '2.11' - ansible: '2.11'
docker: fedora33 docker: fedora33
@ -140,6 +152,10 @@ jobs:
docker: fedora33 docker: fedora33
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.11'
docker: fedora33
python: ''
target: shippable/posix/group6/
- ansible: '2.11' - ansible: '2.11'
docker: alpine3 docker: alpine3
python: '' python: ''
@ -148,6 +164,10 @@ jobs:
docker: alpine3 docker: alpine3
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.11'
docker: alpine3
python: ''
target: shippable/posix/group6/
# 2.12 # 2.12
- ansible: '2.12' - ansible: '2.12'
docker: fedora33 docker: fedora33
@ -157,6 +177,10 @@ jobs:
docker: fedora33 docker: fedora33
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.12'
docker: fedora33
python: ''
target: shippable/posix/group6/
- ansible: '2.12' - ansible: '2.12'
docker: fedora34 docker: fedora34
python: '' python: ''
@ -165,6 +189,10 @@ jobs:
docker: fedora34 docker: fedora34
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.12'
docker: fedora34
python: ''
target: shippable/posix/group6/
- ansible: '2.12' - ansible: '2.12'
docker: ubuntu1804 docker: ubuntu1804
python: '' python: ''
@ -173,6 +201,10 @@ jobs:
docker: ubuntu1804 docker: ubuntu1804
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.12'
docker: ubuntu1804
python: ''
target: shippable/posix/group6/
# 2.13 # 2.13
# NB: We originally wanted to use centos7, but that requires cgroups v1. # NB: We originally wanted to use centos7, but that requires cgroups v1.
# So we used alpine3 instead. # So we used alpine3 instead.
@ -184,6 +216,10 @@ jobs:
docker: alpine3 docker: alpine3
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.13'
docker: alpine3
python: ''
target: shippable/posix/group6/
- ansible: '2.13' - ansible: '2.13'
docker: fedora35 docker: fedora35
python: '' python: ''
@ -192,6 +228,10 @@ jobs:
docker: fedora35 docker: fedora35
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.13'
docker: fedora35
python: ''
target: shippable/posix/group6/
- ansible: '2.13' - ansible: '2.13'
docker: opensuse15py2 docker: opensuse15py2
python: '' python: ''
@ -200,6 +240,10 @@ jobs:
docker: opensuse15py2 docker: opensuse15py2
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.13'
docker: opensuse15py2
python: ''
target: shippable/posix/group6/
- ansible: '2.13' - ansible: '2.13'
docker: alpine3 docker: alpine3
python: '' python: ''
@ -208,6 +252,10 @@ jobs:
docker: alpine3 docker: alpine3
python: '' python: ''
target: shippable/posix/group5/ target: shippable/posix/group5/
- ansible: '2.13'
docker: alpine3
python: ''
target: shippable/posix/group6/
steps: steps:
- name: >- - name: >-

View File

@ -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)."

View File

@ -1,2 +1,2 @@
docker docker<7.0.0
docker-compose docker-compose

View File

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

View File

@ -8,3 +8,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_sdk_for_python

View File

@ -1,2 +1,2 @@
shippable/posix/group4 shippable/posix/group6
destructive destructive

View File

@ -1,4 +1,4 @@
--- ---
dependencies: dependencies:
- setup_docker_compose - setup_docker_compose_v1
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

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

View File

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

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
dependencies:
- setup_docker
- setup_docker_sdk_for_python
- setup_remote_tmp_dir

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,5 +1,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

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

View File

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

View File

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

View File

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

View File

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

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
dependencies:
- setup_docker
- setup_docker_sdk_for_python
- setup_docker_current_container_network_ip
- setup_openssl
- setup_remote_tmp_dir

View File

@ -2,3 +2,4 @@
dependencies: dependencies:
- setup_docker - setup_docker
- setup_paramiko - setup_paramiko
- setup_docker_sdk_for_python

View File

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

View File

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

View File

@ -9,6 +9,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

@ -1,7 +1,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: yes docker_skip_cleanup: yes
docker_prereq_packages: [] docker_prereq_packages: []
docker_packages: docker_packages:
@ -9,10 +8,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

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

View File

@ -64,41 +64,18 @@
register: docker_api_version_stdout register: docker_api_version_stdout
ignore_errors: yes ignore_errors: yes
- name: Limit docker pypi package version to < 4.3.0 # Detect docker CLI version
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
- 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: yes 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: - 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
@ -163,13 +140,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

@ -4,6 +4,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

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

View File

@ -1,2 +0,0 @@
---
skip_docker_compose: true

View File

@ -1,5 +1,10 @@
--- ---
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

@ -33,21 +33,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,6 @@
---
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_sdk_for_python

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

@ -1,2 +1,3 @@
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

@ -1,4 +1,6 @@
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_sdk_for_python
#- setup_docker_current_container_network_ip
- setup_openssl - setup_openssl
- setup_remote_tmp_dir - setup_remote_tmp_dir

View File

@ -12,6 +12,14 @@
include_role: include_role:
name: setup_docker 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 - 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) }}'

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