volume: Support device-based volumes

Also support those options in container and service roles
This commit is contained in:
uumas
2025-07-05 16:14:07 +03:00
parent faa68bfe83
commit a862606df2
9 changed files with 123 additions and 9 deletions

View File

@@ -48,7 +48,7 @@ argument_specs:
elements: dict
options:
type:
description: Type of volume
description: Type of mount
type: str
required: true
choices:
@@ -80,6 +80,28 @@ argument_specs:
type: str
required: false
default: ""
volume_device:
description: >-
The path of a device which is mounted for the volume.
Only applicable if mount type is volume.
type: str
required: false
default: ""
volume_type:
description: >-
The filesystem type of device as used by the mount commands -t option
Only applicable if mount type is volume.
type: str
required: false
default: ""
volume_mount_options:
description: >-
The mount options to use for a filesystem as used by the mount command -o option
Only applicable if mount type is volume.
type: list
elements: str
required: false
default: []
container_publish_ports:
description: "A list of published ports in docker format (<host listen address>:<host port>:<container port>)"

View File

@@ -27,6 +27,9 @@
volume_name: "{{ volume.source }}"
volume_uid: "{{ volume.user | default('') }}"
volume_gid: "{{ volume.group | default('') }}"
volume_type: "{{ volume.volume_type | default('') }}"
volume_device: "{{ volume.volume_device | default('') }}"
volume_mount_options: "{{ volume.volume_mount_options | default([]) }}"
loop: "{{ _container_volumes }}"
loop_control:
loop_var: volume

View File

@@ -18,7 +18,7 @@ _container_mounts: >-
{{
container_mounts | selectattr('type', '!=', 'volume') +
container_mounts | selectattr('type', '==', 'volume')
| community.general.remove_keys(['user', 'group'])
| community.general.keep_keys(['type', 'source', 'destination', 'readonly'])
| zip(_container_volume_mount_sources) | map('combine')
}}