62 lines
2.1 KiB
YAML
62 lines
2.1 KiB
YAML
---
|
|
- name: Validate inputs
|
|
ansible.builtin.import_tasks: validation.yaml
|
|
|
|
- name: Create image for container {{ container_name }}
|
|
ansible.builtin.include_role:
|
|
name: image
|
|
vars:
|
|
image_name: "{{ container_image }}"
|
|
image_creds: "{{ container_image_creds }}"
|
|
when: image_created_images is not defined or container_image not in image_created_images
|
|
|
|
- name: Create networks for container {{ container_name }}
|
|
ansible.builtin.include_role:
|
|
name: network
|
|
vars:
|
|
network_name: "{{ network }}"
|
|
network_subnet: >-
|
|
{{
|
|
container_ip | ansible.utils.ipsubnet(24)
|
|
if (container_ip | length > 0 and network_index == 0) else ''
|
|
}}
|
|
when: network_created_networks is not defined or network not in network_created_networks
|
|
loop: "{{ container_networks }}"
|
|
loop_control:
|
|
loop_var: network
|
|
index_var: network_index
|
|
|
|
- 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('') }}"
|
|
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
|
|
|
|
- name: Create secrets
|
|
ansible.builtin.include_tasks: secrets.yaml
|
|
when: container_secrets | length > 0
|
|
|
|
- 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_with_ip }}"
|
|
publish: "{{ container_publish_ports }}"
|
|
secrets: "{{ _container_secrets }}"
|
|
env: "{{ container_env }}"
|
|
state: quadlet
|
|
quadlet_file_mode: "0600"
|
|
quadlet_options: "{{ _container_quadlet_options }}"
|
|
notify: Restart container service {{ container_name }}
|