Prepare 4.0.0 release. (#971)

This commit is contained in:
Felix Fontein
2024-10-18 21:01:49 +02:00
committed by GitHub
parent 8c5b90df55
commit f7823ea626
63 changed files with 42 additions and 2468 deletions
@@ -1,6 +0,0 @@
# 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
azp/6
destructive
@@ -1,8 +0,0 @@
---
# 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_compose_v1
- setup_remote_tmp_dir
@@ -1,53 +0,0 @@
---
# 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 #
####################################################################
# Create random name prefix (for containers, networks, ...)
- name: Create random container name prefix
set_fact:
cname_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
cnames: []
dnetworks: []
- debug:
msg: "Using container name prefix {{ cname_prefix }}"
# Run the tests
- module_defaults:
community.docker.docker_compose:
api_version: '{{ omit if docker_api_version is version("1.45", "<") else "1.44" }}'
block:
- include_tasks: run-test.yml
with_fileglob:
- "tests/*.yml"
loop_control:
loop_var: test_name
always:
- name: "Make sure all containers are removed"
docker_container:
name: "{{ item }}"
state: absent
force_kill: true
with_items: "{{ cnames }}"
diff: false
- name: "Make sure all networks are removed"
docker_network:
name: "{{ item }}"
state: absent
force: true
with_items: "{{ dnetworks }}"
when: docker_py_version is version('1.10.0', '>=')
diff: false
when: has_docker_compose and docker_py_version is version('1.8.0', '>=') and docker_api_version is version('1.25', '>=')
- fail: msg="Too old docker / docker-py version to run all docker_container tests!"
when: has_docker_compose and not(docker_py_version is version('3.5.0', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
@@ -1,7 +0,0 @@
---
# 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
- name: "Loading tasks from {{ test_name }}"
include_tasks: "{{ test_name }}"
@@ -1,243 +0,0 @@
---
# 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
- name: Registering container name
set_fact:
pname: "{{ cname_prefix }}"
cname_1: "{{ cname_prefix ~ '1' }}"
cname_2: "{{ cname_prefix ~ '2' }}"
####################################################################
## Profiles ########################################################
####################################################################
- block:
- name: Define service
set_fact:
test_service: |
version: '3'
services:
{{ cname_1 }}:
image: "{{ docker_test_image_alpine }}"
command: '/bin/sh -c "sleep 10m"'
profiles:
- profile_1
- profile_all
stop_grace_period: 1s
{{ cname_2 }}:
image: "{{ docker_test_image_alpine }}"
command: '/bin/sh -c "sleep 10m"'
profiles:
- profile_2
- profile_all
stop_grace_period: 1s
test_cases:
- test_name: no services enabled
- test_name: enable 1
profiles_value:
- profile_1
- test_name: stop all services
profiles_value:
- profile_1
stopped_value: true
- test_name: enable 2
profiles_value:
- profile_2
- test_name: stop all services
profiles_value:
- profile_2
stopped_value: true
- test_name: enable both
profiles_value:
- profile_1
- profile_2
- test_name: stop all services
profiles_value:
- profile_1
- profile_2
stopped_value: true
- test_name: enable all
profiles_value:
- profile_all
- name: Profiles ({{ test_case.test_name }})
docker_compose:
project_name: "{{ pname }}"
definition: "{{ test_service | from_yaml }}"
profiles: "{{ test_case.profiles_value | default(omit) }}"
stopped: "{{ test_case.stopped_value | default(omit) }}"
state: present
register: profiles_outputs
loop: "{{ test_cases }}"
loop_control:
loop_var: test_case
- name: Cleanup
docker_compose:
project_name: "{{ pname }}"
state: absent
definition: "{{ test_service | from_yaml }}"
- assert:
that:
- profiles_outputs.results[0] is not changed
- profiles_outputs.results[1].services[cname_1][cname_1_name].state.running
- profiles_outputs.results[1].services[cname_2] == {}
- not profiles_outputs.results[2].services[cname_1][cname_1_name].state.running
- profiles_outputs.results[2].services[cname_2] == {}
- not profiles_outputs.results[3].services[cname_1][cname_1_name].state.running
- profiles_outputs.results[3].services[cname_2][cname_2_name].state.running
- not profiles_outputs.results[4].services[cname_1][cname_1_name].state.running
- not profiles_outputs.results[4].services[cname_2][cname_2_name].state.running
- profiles_outputs.results[5].services[cname_1][cname_1_name].state.running
- profiles_outputs.results[5].services[cname_2][cname_2_name].state.running
- not profiles_outputs.results[6].services[cname_1][cname_1_name].state.running
- not profiles_outputs.results[6].services[cname_2][cname_2_name].state.running
- profiles_outputs.results[7].services[cname_1][cname_1_name].state.running
- profiles_outputs.results[7].services[cname_2][cname_2_name].state.running
vars:
cname_1_name: "{{ pname + '_' + cname_1 + '_1' }}"
cname_2_name: "{{ pname + '_' + cname_2 + '_1' }}"
when: docker_compose_version is version('1.28.0', '>=')
####################################################################
## Env_file ########################################################
####################################################################
- block:
- name: Define service and files
set_fact:
compose_file: "{{ remote_tmp_dir }}/docker-compose.yml"
env_file: "{{ remote_tmp_dir }}/.env"
env_sleep_cmd: sleep 10m
new_env_file: "{{ remote_tmp_dir }}/new.env"
new_env_sleep_cmd: sleep 20m
test_service: |
version: '3'
services:
{{ cname_1 }}:
image: "{{ docker_test_image_alpine }}"
command: '/bin/sh -c "${SLEEP_CMD}"'
stop_grace_period: 1s
- name: Define testcases
set_fact:
test_cases:
- test_name: Without env_file option
- test_name: With env_file option
env_file: "{{ new_env_file }}"
- name: Generate compose file
ansible.builtin.copy:
content: "{{ test_service }}"
dest: "{{ compose_file }}"
- name: Generate .env file
ansible.builtin.copy:
content: |
SLEEP_CMD="{{ env_sleep_cmd }}"
dest: "{{ env_file }}"
- name: Generate new.env file
ansible.builtin.copy:
content: |
SLEEP_CMD="{{ new_env_sleep_cmd }}"
dest: "{{ new_env_file }}"
- name: Env_file
docker_compose:
project_name: "{{ pname }}"
project_src: "{{ remote_tmp_dir }}"
env_file: "{{ test_case.env_file | default(omit) }}"
register: env_file_outputs
loop: "{{ test_cases }}"
loop_control:
loop_var: test_case
- name: Cleanup
docker_compose:
project_name: "{{ pname }}"
state: absent
definition: "{{ test_service | from_yaml }}"
- assert:
that:
- "env_sleep_cmd is in (env_file_outputs.results[0].services[cname_1][cname_1_name].cmd | join(' '))"
- "new_env_sleep_cmd is in (env_file_outputs.results[1].services[cname_1][cname_1_name].cmd | join(' '))"
vars:
cname_1_name: "{{ pname + '_' + cname_1 + '_1' }}"
cname_2_name: "{{ pname + '_' + cname_2 + '_1' }}"
- name: Remove files
ansible.builtin.file:
path: "{{ file_path }}"
state: absent
loop_control:
loop_var: file_path
loop:
- "{{ compose_file }}"
- "{{ env_file }}"
- "{{ new_env_file }}"
when: docker_compose_version is version('1.25.0', '>=')
####################################################################
## Project_src #####################################################
####################################################################
- name: Define service and files
set_fact:
compose_file: "{{ remote_tmp_dir }}/docker-compose.yml"
env_sleep_cmd: sleep 10m
new_env_sleep_cmd: sleep 20m
test_service: |
version: '3'
services:
{{ cname_1 }}:
image: "{{ docker_test_image_alpine }}"
command: '/bin/sh -c 10m'
stop_grace_period: 1s
- name: Generate compose file
ansible.builtin.copy:
content: "{{ test_service }}"
dest: "{{ compose_file }}"
- name: Start with project_src
docker_compose:
project_src: "{{ remote_tmp_dir }}"
register: project_src_1
- name: Start with project_src (idempotent)
docker_compose:
project_src: "{{ remote_tmp_dir }}"
register: project_src_2
- name: Stop with project_src
docker_compose:
project_src: "{{ remote_tmp_dir }}"
state: absent
register: project_src_3
- name: Stop with project_src (idempotent)
docker_compose:
project_src: "{{ remote_tmp_dir }}"
state: absent
register: project_src_4
- name: Remove files
ansible.builtin.file:
path: "{{ file_path }}"
state: absent
loop_control:
loop_var: file_path
loop:
- "{{ compose_file }}"
- assert:
that:
- project_src_1 is changed
# - project_src_2 is not changed -- for some reason, this currently fails!
- project_src_3 is changed
- project_src_4 is not changed
@@ -1,233 +0,0 @@
---
# 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
- name: Registering container name
set_fact:
pname: "{{ cname_prefix }}"
cname: "{{ cname_prefix ~ '-hi' }}"
- name: Registering container name
set_fact:
cnames: "{{ cnames + [pname ~ '-' ~ cname] }}"
dnetworks: "{{ dnetworks + [pname ~ '_default'] }}"
- name: Define service
set_fact:
test_service: |
version: '3'
services:
{{ cname }}:
image: "{{ docker_test_image_alpine }}"
command: '/bin/sh -c "sleep 10m"'
stop_grace_period: 1s
test_service_mod: |
version: '3'
services:
{{ cname }}:
image: "{{ docker_test_image_alpine }}"
command: '/bin/sh -c "sleep 15m"'
stop_grace_period: 1s
####################################################################
## Present #########################################################
####################################################################
- name: Present (check)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
check_mode: true
register: present_1
- name: Present
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
register: present_2
- name: Present (idempotent)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
register: present_3
- name: Present (idempotent check)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
check_mode: true
register: present_4
- name: Present (changed check)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service_mod | from_yaml }}"
check_mode: true
register: present_5
- name: Present (changed)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service_mod | from_yaml }}"
register: present_6
- assert:
that:
- present_1 is changed
- present_2 is changed
- present_3 is not changed
- present_4 is not changed
- present_5 is changed
- present_6 is changed
####################################################################
## Absent ##########################################################
####################################################################
- name: Absent (check)
docker_compose:
project_name: "{{ pname }}"
state: absent
definition: "{{ test_service_mod | from_yaml }}"
check_mode: true
register: absent_1
- name: Absent
docker_compose:
project_name: "{{ pname }}"
state: absent
definition: "{{ test_service_mod | from_yaml }}"
register: absent_2
- name: Absent (idempotent)
docker_compose:
project_name: "{{ pname }}"
state: absent
definition: "{{ test_service_mod | from_yaml }}"
register: absent_3
- name: Absent (idempotent check)
docker_compose:
project_name: "{{ pname }}"
state: absent
definition: "{{ test_service_mod | from_yaml }}"
check_mode: true
register: absent_4
- assert:
that:
- absent_1 is changed
- absent_2 is changed
- absent_3 is not changed
- absent_4 is not changed
####################################################################
## Stopping and starting ###########################################
####################################################################
- name: Present stopped (check)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
stopped: true
check_mode: true
register: present_1
- name: Present stopped
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
stopped: true
register: present_2
- name: Present stopped (idempotent)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
stopped: true
register: present_3
- name: Present stopped (idempotent check)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
stopped: true
check_mode: true
register: present_4
- name: Started (check)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
check_mode: true
register: started_1
- name: Started
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
register: started_2
- name: Started (idempotent)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
register: started_3
- name: Started (idempotent check)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
check_mode: true
register: started_4
- name: Stopped (check)
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
stopped: true
check_mode: true
register: stopped_1
- name: Stopped
docker_compose:
project_name: "{{ pname }}"
state: present
definition: "{{ test_service | from_yaml }}"
stopped: true
register: stopped_2
- name: Cleanup
docker_compose:
project_name: "{{ pname }}"
state: absent
definition: "{{ test_service | from_yaml }}"
- assert:
that:
- present_1 is changed
- present_2 is changed
- present_3 is not changed
- present_4 is not changed
- started_1 is changed
- started_2 is changed
- started_3 is not changed
- started_4 is not changed
- stopped_1 is changed
- stopped_2 is changed
@@ -77,6 +77,7 @@
image: "{{ docker_test_image_alpine }}"
name: "{{ cname }}"
state: present
image_name_mismatch: ignore
register: create_5
check_mode: true
@@ -85,6 +86,7 @@
image: "{{ docker_test_image_alpine }}"
name: "{{ cname }}"
state: present
image_name_mismatch: ignore
register: create_6
- name: Cleanup
@@ -385,18 +385,16 @@
networks_cli_compatible: true
register: networks_7
- name: networks_cli_compatible=yes, networks not specified, purge_networks
- name: networks_cli_compatible=yes, networks empty, purge_networks
docker_container:
image: "{{ docker_test_image_alpine }}"
command: '/bin/sh -c "sleep 10m"'
name: "{{ cname }}"
state: started
networks_cli_compatible: true
purge_networks: true
# To replace `purge_networks=true`, we have to specify `networks: []`:
# comparisons:
# networks: strict
# networks: []
comparisons:
networks: strict
networks: []
force_kill: true
register: networks_8
@@ -2290,7 +2290,7 @@
- interactive_3 is changed
####################################################################
## image / image_comparison / ignore_image #########################
## image / image_comparison ########################################
####################################################################
- name: Pull images to make sure ignore_image test succeeds
@@ -2570,7 +2570,8 @@
- name: ignore_image
docker_container:
image: "{{ docker_test_image_hello_world }}"
ignore_image: true
comparisons:
image: ignore
name: "{{ cname }}"
state: started
register: ignore_image
@@ -2579,8 +2580,9 @@
- name: ignore_image (labels and env differ in image, image_comparison=current-image)
docker_container:
image: "{{ docker_test_image_registry_nginx }}"
ignore_image: true
image_comparison: current-image
comparisons:
image: ignore
name: "{{ cname }}"
state: started
register: ignore_image_2
@@ -2589,8 +2591,9 @@
- name: ignore_image (labels and env differ in image, image_comparison=desired-image)
docker_container:
image: "{{ docker_test_image_registry_nginx }}"
ignore_image: true
image_comparison: desired-image
comparisons:
image: ignore
name: "{{ cname }}"
state: started
force_kill: true
@@ -1,15 +0,0 @@
---
# 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: 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:
- docker-compose
@@ -1,8 +0,0 @@
---
# 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_remote_constraints
@@ -1,9 +0,0 @@
---
# 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
- name: Install docker-compose as system package
apk:
name: "{{ docker_compose_packages }}"
state: present
@@ -1,9 +0,0 @@
---
# 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
- name: Install docker-compose as system package
pacman:
name: "{{ docker_compose_packages }}"
state: present
@@ -1,9 +0,0 @@
---
# 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
- name: Install docker-compose as system package
apt:
name: "{{ docker_compose_packages }}"
state: present
@@ -1,10 +0,0 @@
---
# 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
- name: Install docker-compose as system package
dnf:
name: "{{ docker_compose_packages }}"
state: present
enablerepo: docker-ce-test
@@ -1,9 +0,0 @@
---
# 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
- name: Install docker-compose as system package
yum:
name: "{{ docker_compose_packages }}"
state: present
@@ -1,9 +0,0 @@
---
# 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
- name: Install docker-compose as system package
dnf:
name: "{{ docker_compose_packages }}"
state: present
@@ -1,9 +0,0 @@
---
# 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
- name: Install docker-compose as system package
dnf:
name: "{{ docker_compose_packages }}"
state: present
@@ -1,12 +0,0 @@
---
# 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
- name: Install docker-compose as system package
community.general.zypper:
name: "{{ docker_compose_packages }}"
force: true
disable_gpg_check: true
update_cache: true
notify: cleanup docker
@@ -1,16 +0,0 @@
---
# 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 #
####################################################################
- set_fact:
has_docker_compose: false
- when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6']
include_tasks:
file: setup.yml
@@ -1,79 +0,0 @@
---
# 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
- name: Include distribution specific variables
include_vars: "{{ lookup('first_found', params) }}"
vars:
params:
files:
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}-py{{ ansible_python.version.major }}.yml"
- "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}-py{{ ansible_python.version.major }}.yml"
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
- "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml"
- "{{ ansible_facts.distribution }}-py{{ ansible_python.version.major }}.yml"
- "{{ ansible_facts.os_family }}-py{{ ansible_python.version.major }}.yml"
- "{{ ansible_facts.distribution }}.yml"
- "{{ ansible_facts.os_family }}.yml"
- default.yml
paths:
- "{{ role_path }}/vars"
- block:
- name: Include distribution specific tasks
include_tasks: "{{ lookup('first_found', params) }}"
vars:
params:
files:
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}-py{{ ansible_python.version.major }}.yml"
- "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}-py{{ ansible_python.version.major }}.yml"
- "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
- "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml"
- "{{ ansible_facts.distribution }}-py{{ ansible_python.version.major }}.yml"
- "{{ ansible_facts.os_family }}-py{{ ansible_python.version.major }}.yml"
- "{{ ansible_facts.distribution }}.yml"
- "{{ ansible_facts.os_family }}.yml"
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-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
when: not skip_docker_compose
@@ -1,13 +0,0 @@
---
# 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_compose_packages:
- docker-compose
docker_compose_pip_packages:
- docker-compose
# Force PyYAML to 5.3.1
- PyYAML==5.3.1
# Force requests to < 2.32.0 (https://github.com/docker/docker-py/issues/3256)
- requests<2.32.0
@@ -1,11 +0,0 @@
---
# 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_compose_pip_packages:
- docker-compose
# Force PyYAML to 5.3.1
- PyYAML==5.3.1
# Force requests to < 2.32.0 (https://github.com/docker/docker-py/issues/3256)
- requests<2.32.0
@@ -1,6 +0,0 @@
---
# 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
@@ -1,8 +0,0 @@
---
# 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
@@ -1,8 +0,0 @@
---
# 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
@@ -1,10 +0,0 @@
---
# 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
@@ -1,6 +0,0 @@
---
# 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_compose_packages: []
@@ -1,6 +0,0 @@
---
# 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_compose_packages: []
@@ -1,6 +0,0 @@
---
# 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
@@ -1,6 +0,0 @@
---
# 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_compose_packages: []
@@ -1,9 +0,0 @@
---
# 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
@@ -1,6 +0,0 @@
---
# 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
@@ -1,6 +0,0 @@
---
# 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
@@ -1,6 +0,0 @@
---
# 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_compose_pip_packages: []
@@ -1,4 +0,0 @@
---
# 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