1
0
mirror of https://github.com/ansible-collections/community.docker.git synced 2025-04-18 21:04:01 +03:00

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
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
63 changed files with 42 additions and 2468 deletions

View File

@ -99,17 +99,6 @@ stages:
test: '2.16/sanity/1'
- name: Units
test: '2.16/units/1'
- stage: Ansible_2_15
displayName: Sanity & Units 2.15
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
targets:
- name: Sanity
test: '2.15/sanity/1'
- name: Units
test: '2.15/units/1'
### Docker
- stage: Docker_devel
@ -131,7 +120,6 @@ stages:
groups:
- 4
- 5
# - 6 -- some images no longer work with docker-compose v1
- stage: Docker_2_18
displayName: Docker 2.18
dependsOn: []
@ -145,7 +133,6 @@ stages:
groups:
- 4
- 5
# - 6 -- some images no longer work with docker-compose v1
- stage: Docker_2_17
displayName: Docker 2.17
dependsOn: []
@ -163,7 +150,6 @@ stages:
groups:
- 4
- 5
- 6
- stage: Docker_2_16
displayName: Docker 2.16
dependsOn: []
@ -183,23 +169,6 @@ stages:
groups:
- 4
- 5
- 6
- stage: Docker_2_15
displayName: Docker 2.15
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.15/linux/{0}
targets:
- name: Fedora 37
test: fedora37
- name: CentOS 7
test: centos7
groups:
- 4
- 5
- 6
### Community Docker
- stage: Docker_community_devel
@ -219,7 +188,6 @@ stages:
groups:
- 4
- 5
- 6
### Remote
- stage: Remote_devel
@ -238,7 +206,6 @@ stages:
- 3
- 4
- 5
# - 6 -- Docker 26 no longer works with docker-compose v1
- stage: Remote_2_18
displayName: Remote 2.18
dependsOn: []
@ -255,7 +222,6 @@ stages:
- 3
- 4
- 5
# - 6 -- Docker 26 no longer works with docker-compose v1
- stage: Remote_2_17
displayName: Remote 2.17
dependsOn: []
@ -272,7 +238,6 @@ stages:
- 3
- 4
- 5
# - 6 -- Docker 26 no longer works with docker-compose v1
- stage: Remote_2_16
displayName: Remote 2.16
dependsOn: []
@ -286,24 +251,6 @@ stages:
# Currently always hangs in group 2
# - name: RHEL 8.8
# test: rhel/8.8
groups:
- 1
- 2
- 3
- 4
- 5
- stage: Remote_2_15
displayName: Remote 2.15
dependsOn: []
jobs:
- template: templates/matrix.yml
parameters:
testFormat: 2.15/{0}
targets:
- name: RHEL 9.1
test: rhel/9.1
- name: RHEL 8.7
test: rhel/8.7
- name: RHEL 7.9
test: rhel/7.9
groups:
@ -322,17 +269,14 @@ stages:
- Ansible_2_18
- Ansible_2_17
- Ansible_2_16
- Ansible_2_15
- Remote_devel
- Remote_2_18
- Remote_2_17
- Remote_2_16
- Remote_2_15
- Docker_devel
- Docker_2_18
- Docker_2_17
- Docker_2_16
- Docker_2_15
- Docker_community_devel
jobs:
- template: templates/coverage.yml

View File

@ -29,10 +29,7 @@ jobs:
strategy:
matrix:
ansible:
- '2.11'
- '2.12'
- '2.13'
- '2.14'
- '2.15'
# Ansible-test on various stable branches does not yet work well with cgroups v2.
# Since ubuntu-latest now uses Ubuntu 22.04, we need to fall back to the ubuntu-20.04
# image for these stable branches. The list of branches where this is necessary will
@ -71,10 +68,7 @@ jobs:
fail-fast: true
matrix:
ansible:
- '2.11'
- '2.12'
- '2.13'
- '2.14'
- '2.15'
steps:
- name: Perform unit testing against Ansible version ${{ matrix.ansible }}
@ -118,107 +112,15 @@ jobs:
exclude:
- ansible: ''
include:
# 2.11
- ansible: '2.11'
docker: alpine3
# 2.15
- ansible: '2.15'
docker: fedora37
python: ''
target: azp/4/
extra-constraints: urllib3 < 2.0.0
- ansible: '2.11'
docker: alpine3
- ansible: '2.15'
docker: fedora37
python: ''
target: azp/5/
- ansible: '2.11'
docker: alpine3
python: ''
target: azp/6/
# 2.12
- ansible: '2.12'
docker: fedora33
python: ''
target: azp/4/
- ansible: '2.12'
docker: fedora33
python: ''
target: azp/5/
- ansible: '2.12'
docker: fedora33
python: ''
target: azp/6/
- ansible: '2.12'
docker: fedora34
python: ''
target: azp/4/
- ansible: '2.12'
docker: fedora34
python: ''
target: azp/5/
- ansible: '2.12'
docker: fedora34
python: ''
target: azp/6/
- ansible: '2.12'
docker: ubuntu1804
python: ''
target: azp/4/
- ansible: '2.12'
docker: ubuntu1804
python: ''
target: azp/5/
- ansible: '2.12'
docker: ubuntu1804
python: ''
target: azp/6/
# 2.13
- ansible: '2.13'
docker: fedora35
python: ''
target: azp/4/
- ansible: '2.13'
docker: fedora35
python: ''
target: azp/5/
- ansible: '2.13'
docker: fedora35
python: ''
target: azp/6/
- ansible: '2.13'
docker: opensuse15py2
python: ''
target: azp/4/
- ansible: '2.13'
docker: opensuse15py2
python: ''
target: azp/5/
- ansible: '2.13'
docker: opensuse15py2
python: ''
target: azp/6/
- ansible: '2.13'
docker: alpine3
python: ''
target: azp/4/
- ansible: '2.13'
docker: alpine3
python: ''
target: azp/5/
- ansible: '2.13'
docker: alpine3
python: ''
target: azp/6/
# 2.14
- ansible: '2.14'
docker: alpine3
python: ''
target: azp/4/
- ansible: '2.14'
docker: alpine3
python: ''
target: azp/5/
- ansible: '2.14'
docker: alpine3
python: ''
target: azp/6/
steps:
- name: Perform integration testing against Ansible version ${{ matrix.ansible }} under Python ${{ matrix.python }}

View File

@ -57,19 +57,6 @@ jobs:
ansible_runner: ansible-runner
base_image: quay.io/rockylinux/rockylinux:9
pre_base: '"#"'
- name: ansible-core 2.14 @ CentOS Stream 9
ansible_core: https://github.com/ansible/ansible/archive/stable-2.14.tar.gz
ansible_runner: ansible-runner
base_image: quay.io/centos/centos:stream9
pre_base: '"#"'
- name: ansible-core 2.13 @ RHEL UBI 8
ansible_core: https://github.com/ansible/ansible/archive/stable-2.13.tar.gz
ansible_runner: ansible-runner
other_deps: |2
python_interpreter:
package_system: python39 python39-pip python39-wheel python39-cryptography
base_image: docker.io/redhat/ubi8:latest
pre_base: '"#"'
runs-on: ubuntu-latest
steps:
- name: Check out code

View File

@ -37,9 +37,7 @@ For more information about communication, see the [Ansible communication guide](
## Tested with Ansible
Tested with the current ansible-core 2.11, ansible-core 2.12, ansible-core 2.13, ansible-core 2.14, ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, and ansible-core 2.18 releases, and the current development version of ansible-core. Ansible/ansible-base versions before 2.11.0 are not supported.
Please note that Ansible 2.9 and ansible-base 2.10 are no longer supported. If you need to use them, use community.docker 2.x.y. Also note that this collection does not work with ansible-core 2.11 (this includes ansible-base and Ansible 2.9) on Python 3.12+.
Tested with the current ansible-core 2.15, ansible-core 2.16, ansible-core 2.17, and ansible-core 2.18 releases, and the current development version of ansible-core. Ansible/ansible-base versions before 2.15.0 are not supported.
## External requirements

View File

@ -0,0 +1,9 @@
release_summary: Major release with removed deprecated features.
removed_features:
- "The collection no longer supports ansible-core 2.11, 2.12, 2.13, and 2.14. You need ansible-core 2.15.0 or newer to use community.docker 4.x.y (https://github.com/ansible-collections/community.docker/pull/971)."
- "The docker_compose module has been removed. Please migrate to community.docker.docker_compose_v2 (https://github.com/ansible-collections/community.docker/pull/971)."
- "various modules and plugins - remove the ``ssl_version`` option (https://github.com/ansible-collections/community.docker/pull/971)."
- "docker_container - the ``ignore_image`` option has been removed. Use ``image: ignore`` in ``comparisons`` instead (https://github.com/ansible-collections/community.docker/pull/971)."
- "docker_container - the ``purge_networks`` option has been removed. Use ``networks: strict`` in ``comparisons`` instead and make sure that ``networks`` is specified (https://github.com/ansible-collections/community.docker/pull/971)."
breaking_changes:
- "docker_container - the default of ``image_name_mismatch`` changed from ``ignore`` to ``recreate`` (https://github.com/ansible-collections/community.docker/pull/971)."

View File

@ -7,7 +7,7 @@
namespace: community
name: docker
version: 3.13.2
version: 4.0.0
readme: README.md
authors:
- Ansible Docker Working Group

View File

@ -3,10 +3,9 @@
# 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
requires_ansible: '>=2.11.0'
requires_ansible: '>=2.15.0'
action_groups:
docker:
- docker_compose
- docker_compose_v2
- docker_compose_v2_exec
- docker_compose_v2_pull
@ -47,6 +46,6 @@ action_groups:
plugin_routing:
modules:
docker_compose:
deprecation:
tombstone:
removal_version: 4.0.0
warning_text: This module uses docker-compose v1, which is End of Life since July 2022. Please migrate to community.docker.docker_compose_v2.

View File

@ -21,7 +21,6 @@ notes:
with Python's C(SSLSocket)s. See U(https://github.com/ansible-collections/community.docker/issues/605) for more information.
extends_documentation_fragment:
- community.docker.docker.api_documentation
- community.docker.docker.ssl_version_deprecation
- community.docker.docker.var_names
options:
remote_user:

View File

@ -71,14 +71,6 @@ options:
the file C(key.pem) from the directory specified in the environment variable E(DOCKER_CERT_PATH) will be used.
type: path
aliases: [ tls_client_key, key_path ]
ssl_version:
description:
- Provide a valid SSL version number. Default value determined by L(SSL Python module, https://docs.python.org/3/library/ssl.html).
- If the value is not specified in the task, the value of environment variable E(DOCKER_SSL_VERSION) will be
used instead.
- B(Note:) this option is no longer supported for Docker SDK for Python 7.0.0+. Specifying it with Docker SDK for
Python 7.0.0 or newer will lead to an error.
type: str
tls:
description:
- Secure the connection to the API by using TLS without verifying the authenticity of the Docker host
@ -110,7 +102,7 @@ options:
notes:
- Connect to the Docker daemon by providing parameters with each task or by defining environment variables.
You can define E(DOCKER_HOST), E(DOCKER_TLS_HOSTNAME), E(DOCKER_API_VERSION), E(DOCKER_CERT_PATH), E(DOCKER_SSL_VERSION),
You can define E(DOCKER_HOST), E(DOCKER_TLS_HOSTNAME), E(DOCKER_API_VERSION), E(DOCKER_CERT_PATH),
E(DOCKER_TLS), E(DOCKER_TLS_VERIFY) and E(DOCKER_TIMEOUT). If you are using docker machine, run the script shipped
with the product that sets up the environment. It will set these variables for you. See
U(https://docs.docker.com/machine/reference/env/) for more details.
@ -148,9 +140,6 @@ options:
client_key:
vars:
- name: ansible_docker_client_key
ssl_version:
vars:
- name: ansible_docker_ssl_version
tls:
vars:
- name: ansible_docker_tls
@ -250,12 +239,6 @@ options:
the file C(key.pem) from the directory specified in the environment variable E(DOCKER_CERT_PATH) will be used.
type: path
aliases: [ tls_client_key, key_path ]
ssl_version:
description:
- Provide a valid SSL version number. Default value determined by L(SSL Python module, https://docs.python.org/3/library/ssl.html).
- If the value is not specified in the task, the value of environment variable E(DOCKER_SSL_VERSION) will be
used instead.
type: str
tls:
description:
- Secure the connection to the API by using TLS without verifying the authenticity of the Docker host
@ -286,7 +269,7 @@ options:
notes:
- Connect to the Docker daemon by providing parameters with each task or by defining environment variables.
You can define E(DOCKER_HOST), E(DOCKER_TLS_HOSTNAME), E(DOCKER_API_VERSION), E(DOCKER_CERT_PATH), E(DOCKER_SSL_VERSION),
You can define E(DOCKER_HOST), E(DOCKER_TLS_HOSTNAME), E(DOCKER_API_VERSION), E(DOCKER_CERT_PATH),
E(DOCKER_TLS), E(DOCKER_TLS_VERIFY) and E(DOCKER_TIMEOUT). If you are using docker machine, run the script shipped
with the product that sets up the environment. It will set these variables for you. See
U(https://docs.docker.com/machine/reference/env/) for more details.
@ -394,13 +377,3 @@ notes:
- This module does B(not) use the L(Docker SDK for Python,https://docker-py.readthedocs.io/en/stable/) to
communicate with the Docker daemon. It directly calls the Docker CLI program.
'''
# DEPRECATED: this will be removed from community.docker 4.0.0! Use with care!
SSL_VERSION_DEPRECATION = '''
options:
ssl_version:
deprecated:
why: This was necessary a long time ago to handle problems with older TLS/SSL versions. It is no longer necessary nowadays.
version: 4.0.0
alternatives: None.
'''

View File

@ -21,7 +21,6 @@ author:
extends_documentation_fragment:
- ansible.builtin.constructed
- community.docker.docker.api_documentation
- community.docker.docker.ssl_version_deprecation
- community.library_inventory_filtering_v1.inventory_filter
description:
- Reads inventories from the Docker API.

View File

@ -77,15 +77,6 @@ DOCUMENTATION = r'''
description: When verifying the authenticity of the Docker host server, provide the expected name of
the server.
type: str
ssl_version:
description:
- Provide a valid SSL version number. Default value determined
by L(SSL Python module, https://docs.python.org/3/library/ssl.html).
type: str
deprecated:
why: This was necessary a long time ago to handle problems with SSL versions. It is no longer necessary nowadays.
version: 4.0.0
alternatives: None.
api_version:
description:
- The version of the Docker API running on the Docker Host.
@ -197,7 +188,6 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
tls_hostname=self.get_option('tls_hostname'),
api_version=self.get_option('api_version'),
timeout=self.get_option('timeout'),
ssl_version=self.get_option('ssl_version'),
use_ssh_client=self.get_option('use_ssh_client'),
debug=None,
)

View File

@ -122,18 +122,6 @@ if not HAS_DOCKER_PY:
def _get_tls_config(fail_function, **kwargs):
if 'ssl_version' in kwargs and LooseVersion(docker_version) >= LooseVersion('7.0.0b1'):
ssl_version = kwargs.pop('ssl_version')
if ssl_version is not None:
fail_function(
"ssl_version is not compatible with Docker SDK for Python 7.0.0+. You are using"
" Docker SDK for Python {docker_py_version}. The ssl_version option (value: {ssl_version})"
" has either been set directly or with the environment variable DOCKER_SSL_VERSION."
" Make sure it is not set, or switch to an older version of Docker SDK for Python.".format(
docker_py_version=docker_version,
ssl_version=ssl_version,
)
)
if 'assert_hostname' in kwargs and LooseVersion(docker_version) >= LooseVersion('7.0.0b1'):
assert_hostname = kwargs.pop('assert_hostname')
if assert_hostname is not None:
@ -174,7 +162,6 @@ def get_connect_params(auth, fail_function):
tls_config = dict(
verify=True,
assert_hostname=auth['tls_hostname'],
ssl_version=auth['ssl_version'],
fail_function=fail_function,
)
if auth['cert_path'] and auth['key_path']:
@ -186,7 +173,6 @@ def get_connect_params(auth, fail_function):
# TLS without verification
tls_config = dict(
verify=False,
ssl_version=auth['ssl_version'],
fail_function=fail_function,
)
if auth['cert_path'] and auth['key_path']:
@ -334,7 +320,6 @@ class AnsibleDockerClientBase(Client):
cacert_path=self._get_value('cacert_path', params['ca_path'], 'DOCKER_CERT_PATH', None, type='str'),
cert_path=self._get_value('cert_path', params['client_cert'], 'DOCKER_CERT_PATH', None, type='str'),
key_path=self._get_value('key_path', params['client_key'], 'DOCKER_CERT_PATH', None, type='str'),
ssl_version=self._get_value('ssl_version', params['ssl_version'], 'DOCKER_SSL_VERSION', None, type='str'),
tls=self._get_value('tls', params['tls'], 'DOCKER_TLS', DEFAULT_TLS, type='bool'),
tls_verify=self._get_value('tls_verfy', params['validate_certs'], 'DOCKER_TLS_VERIFY',
DEFAULT_TLS_VERIFY, type='bool'),

View File

@ -83,7 +83,6 @@ def get_connect_params(auth_data, fail_function):
tls_config = dict(
verify=True,
assert_hostname=auth_data['tls_hostname'],
ssl_version=auth_data['ssl_version'],
fail_function=fail_function,
)
if auth_data['cert_path'] and auth_data['key_path']:
@ -95,7 +94,6 @@ def get_connect_params(auth_data, fail_function):
# TLS without verification
tls_config = dict(
verify=False,
ssl_version=auth_data['ssl_version'],
fail_function=fail_function,
)
if auth_data['cert_path'] and auth_data['key_path']:
@ -205,7 +203,6 @@ class AnsibleDockerClientBase(Client):
cacert_path=self._get_value('cacert_path', params['ca_path'], 'DOCKER_CERT_PATH', None, type='str'),
cert_path=self._get_value('cert_path', params['client_cert'], 'DOCKER_CERT_PATH', None, type='str'),
key_path=self._get_value('key_path', params['client_key'], 'DOCKER_CERT_PATH', None, type='str'),
ssl_version=self._get_value('ssl_version', params['ssl_version'], 'DOCKER_SSL_VERSION', None, type='str'),
tls=self._get_value('tls', params['tls'], 'DOCKER_TLS', DEFAULT_TLS, type='bool'),
tls_verify=self._get_value('tls_verfy', params['validate_certs'], 'DOCKER_TLS_VERIFY',
DEFAULT_TLS_VERIFY, type='bool'),

View File

@ -135,11 +135,6 @@ class ContainerManager(DockerBaseClass):
comp_aliases[option_name] = option_name
for alias in option.ansible_aliases:
comp_aliases[alias] = option_name
# Process legacy ignore options
if self.module.params['ignore_image']:
self.all_options['image'].comparison = 'ignore'
if self.module.params['purge_networks']:
self.all_options['networks'].comparison = 'strict'
# Process comparisons specified by user
if self.module.params.get('comparisons'):
# If '*' appears in comparisons, process it first
@ -184,11 +179,6 @@ class ContainerManager(DockerBaseClass):
for option in self.all_options.values():
if option.copy_comparison_from is not None:
option.comparison = self.all_options[option.copy_comparison_from].comparison
# Check legacy values
if self.module.params['ignore_image'] and self.all_options['image'].comparison != 'ignore':
self.module.warn('The ignore_image option has been overridden by the comparisons option!')
if self.module.params['purge_networks'] and self.all_options['networks'].comparison != 'strict':
self.module.warn('The purge_networks option has been overridden by the comparisons option!')
def _update_params(self):
if self.param_networks_cli_compatible is True and self.module.params['networks'] and self.module.params['network_mode'] is None:
@ -332,20 +322,9 @@ class ContainerManager(DockerBaseClass):
image_different = False
if self.all_options['image'].comparison == 'strict':
image_different = self._image_is_different(image, container)
if self.param_image_name_mismatch != 'ignore' and self.param_image is not None and self.param_image != container.image_name:
if self.param_image_name_mismatch == 'recreate':
different = True
self.diff_tracker.add('image_name', parameter=self.param_image, active=container.image_name)
else:
# The default has been deprecated!
self.module.deprecate(
'The default value "ignore" for image_name_mismatch has been deprecated and will change to "recreate"'
' in community.docker 4.0.0. In the current situation, this would cause the container to be recreated'
' since the current container\'s image name "{active}" does not match the desired image name "{parameter}".'.format(
parameter=self.param_image, active=container.image_name),
version='4.0.0',
collection_name='community.docker',
)
if self.param_image_name_mismatch == 'recreate' and self.param_image is not None and self.param_image != container.image_name:
different = True
self.diff_tracker.add('image_name', parameter=self.param_image, active=container.image_name)
if image_different or different or self.param_recreate:
self.diff_tracker.merge(differences)
self.diff['differences'] = differences.get_legacy_docker_container_diffs()
@ -704,13 +683,6 @@ class ContainerManager(DockerBaseClass):
updated_container = self._add_networks(container, network_differences)
purge_networks = self.all_options['networks'].comparison == 'strict' and self.module.params['networks'] is not None
if not purge_networks and self.module.params['purge_networks']:
purge_networks = True
self.module.deprecate(
'The purge_networks option is used while networks is not specified. In this case purge_networks=true cannot'
' be replaced by `networks: strict` in comparisons, which is necessary once purge_networks is removed.'
' Please modify the docker_container invocation by adding `networks: []`',
version='4.0.0', collection_name='community.docker')
if purge_networks:
has_extra_networks, extra_networks = self.has_extra_networks(container)
if has_extra_networks:
@ -890,11 +862,10 @@ def run_module(engine_driver):
command_handling=dict(type='str', choices=['compatibility', 'correct'], default='correct'),
default_host_ip=dict(type='str'),
force_kill=dict(type='bool', default=False, aliases=['forcekill']),
ignore_image=dict(type='bool', default=False, removed_in_version='4.0.0', removed_from_collection='community.docker'),
image=dict(type='str'),
image_comparison=dict(type='str', choices=['desired-image', 'current-image'], default='desired-image'),
image_label_mismatch=dict(type='str', choices=['ignore', 'fail'], default='ignore'),
image_name_mismatch=dict(type='str', choices=['ignore', 'recreate']),
image_name_mismatch=dict(type='str', choices=['ignore', 'recreate'], default='recreate'),
keep_volumes=dict(type='bool', default=True),
kill_signal=dict(type='str'),
name=dict(type='str', required=True),
@ -903,7 +874,6 @@ def run_module(engine_driver):
paused=dict(type='bool'),
pull=dict(type='raw', choices=['never', 'missing', 'always', True, False], default='missing'),
pull_check_mode_behavior=dict(type='str', choices=['image_not_present', 'always'], default='image_not_present'),
purge_networks=dict(type='bool', default=False, removed_in_version='4.0.0', removed_from_collection='community.docker'),
recreate=dict(type='bool', default=False),
removal_wait_timeout=dict(type='float'),
restart=dict(type='bool', default=False),

View File

@ -29,12 +29,6 @@ DOCKER_COMMON_ARGS = dict(
ca_path=dict(type='path', aliases=['ca_cert', 'tls_ca_cert', 'cacert_path']),
client_cert=dict(type='path', aliases=['tls_client_cert', 'cert_path']),
client_key=dict(type='path', aliases=['tls_client_key', 'key_path']),
ssl_version=dict(
type='str',
fallback=(env_fallback, ['DOCKER_SSL_VERSION']),
removed_in_version='4.0.0',
removed_from_collection='community.docker',
),
tls=dict(type='bool', default=DEFAULT_TLS, fallback=(env_fallback, ['DOCKER_TLS'])),
use_ssh_client=dict(type='bool', default=False),
validate_certs=dict(type='bool', default=DEFAULT_TLS_VERIFY, fallback=(env_fallback, ['DOCKER_TLS_VERIFY']), aliases=['tls_verify']),

View File

@ -10,15 +10,4 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
# Once we drop support for ansible-core 2.11, we can remove the try/except.
from ansible.module_utils.six import raise_from
try:
from ansible.module_utils.compat.version import LooseVersion, StrictVersion # noqa: F401, pylint: disable=unused-import
except ImportError:
try:
from distutils.version import LooseVersion, StrictVersion # noqa: F401, pylint: disable=unused-import
except ImportError as exc:
msg = 'To use this plugin or module with ansible-core 2.11, you need to use Python < 3.12 with distutils.version present'
raise_from(ImportError(msg), exc)
from ansible.module_utils.compat.version import LooseVersion, StrictVersion # noqa: F401, pylint: disable=unused-import

File diff suppressed because it is too large Load Diff

View File

@ -143,7 +143,6 @@ author:
- Felix Fontein (@felixfontein)
seealso:
- module: community.docker.docker_compose
- module: community.docker.docker_compose_v2_pull
'''

View File

@ -429,18 +429,6 @@ options:
description:
- The container's hostname.
type: str
ignore_image:
description:
- When O(state) is V(present) or V(started), the module compares the configuration of an existing
container to requested configuration. The evaluation includes the image version. If the image
version in the registry does not match the container, the container will be recreated. You can
stop this behavior by setting O(ignore_image) to V(true).
- "B(Warning:) This option is ignored if C(image: ignore) or C(*: ignore) is specified in the
O(comparisons) option."
- "This option is deprecated since community.docker 3.2.0 and will be removed in community.docker 4.0.0.
Use C(image: ignore) in O(comparisons) instead of O(ignore_image=true)."
type: bool
default: false
image:
description:
- Repository path and tag used to create the container. If an image is not found or pull is true, the image
@ -485,12 +473,12 @@ options:
- If set to V(recreate) the container will be recreated.
- If set to V(ignore) (currently the default) the container will not be recreated because of this. It might still get recreated for other reasons.
This has been the default behavior of the module for a long time, but might not be what users expect.
- Since community.docker 3.5.0, the default V(ignore) has been deprecated. If not specified, a deprecation warning
will be emitted if this setting would make a difference. The default will change to V(recreate) in community.docker 4.0.0.
- The default changed from V(ignore) to V(recreate) in community.docker 4.0.0.
type: str
choices:
- recreate
- ignore
default: recreate
version_added: 3.2.0
init:
description:
@ -849,15 +837,6 @@ options:
- image_not_present
- always
version_added: 3.8.0
purge_networks:
description:
- Remove the container from ALL networks not included in O(networks) parameter.
- Any default networks such as C(bridge), if not found in O(networks), will be removed as well.
- "This option is deprecated since community.docker 3.2.0 and will be removed in community.docker 4.0.0.
Use C(networks: strict) in O(comparisons) instead of O(purge_networks=true) and make sure that
O(networks) is specified. If you want to remove all networks, specify O(networks) as C([])."
type: bool
default: false
read_only:
description:
- Mount the container's root file system as read-only.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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: []

View File

@ -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: []

View File

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

View File

@ -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: []

View File

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

View File

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

View File

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

View File

@ -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: []

View File

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

View File

@ -1,14 +0,0 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
.azure-pipelines/scripts/publish-codecov.py compile-2.6!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py compile-2.7!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py compile-3.5!skip # Uses Python 3.6+ syntax
.azure-pipelines/scripts/publish-codecov.py future-import-boilerplate
.azure-pipelines/scripts/publish-codecov.py metaclass-boilerplate
plugins/modules/current_container_facts.py validate-modules:return-syntax-error
plugins/module_utils/module_container/module.py compile-2.6!skip # Uses Python 2.7+ syntax
plugins/module_utils/module_container/module.py import-2.6!skip # Uses Python 2.7+ syntax
plugins/modules/docker_compose_v2.py validate-modules:return-syntax-error
plugins/modules/docker_compose_v2_pull.py validate-modules:return-syntax-error
plugins/modules/docker_container.py import-2.6!skip # Import uses Python 2.7+ syntax
plugins/modules/docker_container_copy_into.py validate-modules:undocumented-parameter # _max_file_size_for_diff is used by the action plugin
plugins/modules/docker_image_build.py validate-modules:invalid-documentation

View File

@ -1,3 +0,0 @@
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-FileCopyrightText: Ansible Project

View File

@ -1,6 +0,0 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
plugins/modules/current_container_facts.py validate-modules:return-syntax-error
plugins/modules/docker_compose_v2.py validate-modules:return-syntax-error
plugins/modules/docker_compose_v2_pull.py validate-modules:return-syntax-error
plugins/modules/docker_container_copy_into.py validate-modules:undocumented-parameter # _max_file_size_for_diff is used by the action plugin
plugins/modules/docker_image_build.py validate-modules:invalid-documentation

View File

@ -1,3 +0,0 @@
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-FileCopyrightText: Ansible Project

View File

@ -1,4 +0,0 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
plugins/modules/docker_compose_v2.py validate-modules:return-syntax-error
plugins/modules/docker_container_copy_into.py validate-modules:undocumented-parameter # _max_file_size_for_diff is used by the action plugin
plugins/modules/docker_image_build.py validate-modules:invalid-documentation

View File

@ -1,3 +0,0 @@
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-FileCopyrightText: Ansible Project

View File

@ -1,3 +0,0 @@
.azure-pipelines/scripts/publish-codecov.py replace-urlopen
plugins/modules/docker_container_copy_into.py validate-modules:undocumented-parameter # _max_file_size_for_diff is used by the action plugin
plugins/modules/docker_image_build.py validate-modules:invalid-documentation

View File

@ -1,3 +0,0 @@
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-FileCopyrightText: Ansible Project