Files
ansible-podman/roles/container/tasks/main.yaml
uumas 61a8e67205 Add volume role and support setting volume owner
Add volume role
container: Use volume role, including support for user and group
2024-11-19 19:50:43 +02:00

47 lines
1.7 KiB
YAML

---
- name: Validate inputs
ansible.builtin.import_tasks: validation.yaml
- name: Create networks for container {{ container_name }}
ansible.builtin.include_role:
name: network
vars:
network_name: "{{ network }}"
loop: "{{ container_networks }}"
loop_control:
loop_var: network
- name: Create volumes for container {{ container_name }}
ansible.builtin.include_role:
name: volume
vars:
volume_name: "{{ volume.source }}"
volume_uid: "{{ volume.user | default('') }}"
volume_gid: "{{ volume.group | default('') }}"
loop: "{{ _container_volumes }}"
loop_control:
loop_var: volume
- name: Create secrets for container {{ container_name }}
containers.podman.podman_secret:
name: "{{ item.name }}"
data: "{{ item.value | default(lookup('community.general.random_string', special=false, length=128)) }}"
skip_existing: "{{ item.value is not defined }}"
loop: "{{ container_secrets }}"
- name: Create container service {{ container_name }}
containers.podman.podman_container:
image: "{{ container_image }}"
name: "{{ container_name }}"
command: "{{ container_command or omit }}"
user: "{{ container_user or omit }}"
mount: "{{ _container_mounts | map('items') | map('map', 'join', '=') | map('join', ',') }}"
network: "{{ container_networks | map('regex_replace', '$', '.network') }}"
publish: "{{ container_publish_ports }}"
secrets: "{{ container_secrets | map(attribute='name') }}"
env: "{{ container_env.keys() | zip(container_env.values() | map('quote')) | community.general.dict }}"
state: quadlet
quadlet_file_mode: "0600"
quadlet_options: "{{ _container_quadlet_options }}"
notify: "Restart container service {{ container_name }}"