diff --git a/changelogs/fragments/977-renew_anon_volumes.yaml b/changelogs/fragments/977-renew_anon_volumes.yaml new file mode 100644 index 000000000..a457203e4 --- /dev/null +++ b/changelogs/fragments/977-renew_anon_volumes.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - docker_compose_v2 - add ``renew_anon_volumes`` parameter for ``docker compose up`` (https://github.com/ansible-collections/community.docker/pull/977). diff --git a/plugins/modules/docker_compose_v2.py b/plugins/modules/docker_compose_v2.py index 5ed873bb1..146424580 100644 --- a/plugins/modules/docker_compose_v2.py +++ b/plugins/modules/docker_compose_v2.py @@ -93,6 +93,13 @@ - always - never - auto + renew_anon_volumes: + description: + - Whether to recreate instead of reuse anonymous volumes from previous containers. + - V(true) is equivalent to the C(--renew-anon-volumes) option of C(docker compose up). + type: bool + default: false + version_added: 4.0.0 remove_images: description: - Use with O(state=absent) to remove all images or only local images. @@ -437,6 +444,7 @@ def __init__(self, client): self.remove_images = parameters['remove_images'] self.remove_volumes = parameters['remove_volumes'] self.remove_orphans = parameters['remove_orphans'] + self.renew_anon_volumes = parameters['renew_anon_volumes'] self.timeout = parameters['timeout'] self.services = parameters['services'] or [] self.scale = parameters['scale'] or {} @@ -479,6 +487,8 @@ def get_up_cmd(self, dry_run, no_start=False): args.append('--force-recreate') if self.recreate == 'never': args.append('--no-recreate') + if self.renew_anon_volumes: + args.append('--renew-anon-volumes') if not self.dependencies: args.append('--no-deps') if self.timeout is not None: @@ -621,6 +631,7 @@ def main(): pull=dict(type='str', choices=['always', 'missing', 'never', 'policy'], default='policy'), build=dict(type='str', choices=['always', 'never', 'policy'], default='policy'), recreate=dict(type='str', default='auto', choices=['always', 'never', 'auto']), + renew_anon_volumes=dict(type='bool', default=False), remove_images=dict(type='str', choices=['all', 'local']), remove_volumes=dict(type='bool', default=False), remove_orphans=dict(type='bool', default=False),