Template mounts are templated from jinja2 templates to a service name -specific directory under /srv and bind mounted inside the container.
47 lines
1.7 KiB
YAML
47 lines
1.7 KiB
YAML
---
|
|
- name: Validate inputs
|
|
ansible.builtin.import_tasks: validation.yaml
|
|
|
|
- name: Initialize variables
|
|
ansible.builtin.set_fact:
|
|
_service_container_mounts: []
|
|
_service_container_requires: "{{ service_requires }}"
|
|
_service_container_secrets: []
|
|
|
|
- name: Secrets definition for {{ service_name }}
|
|
ansible.builtin.set_fact:
|
|
_service_container_secrets: "{{ _service_container_secrets + [secret | combine({'name': service_name ~ '-' ~ secret.name})] }}"
|
|
no_log: true
|
|
loop: "{{ service_container_secrets }}"
|
|
loop_control:
|
|
loop_var: secret
|
|
|
|
- name: Databse for {{ service_name }}
|
|
ansible.builtin.include_tasks: database.yaml
|
|
when: "service_database_type != 'none'"
|
|
|
|
- name: Mounts for {{ service_name }}
|
|
ansible.builtin.include_tasks: mounts.yaml
|
|
when: service_container_mounts | length > 0
|
|
|
|
- name: Main container for {{ service_name }}
|
|
ansible.builtin.import_role:
|
|
name: container
|
|
vars:
|
|
container_name: "{{ service_name }}"
|
|
container_image: "{{ service_container_image }}"
|
|
container_user: "{{ service_container_user }}"
|
|
container_mounts: "{{ _service_container_mounts }}"
|
|
container_publish_ports: "{{ service_container_publish_ports }}"
|
|
container_networks:
|
|
- "{{ service_name }}"
|
|
container_secrets: "{{ _service_container_secrets }}"
|
|
container_env: "{{ service_container_env }}"
|
|
container_requires: "{{ _service_container_requires }}"
|
|
container_wants: "{{ [service_name + '-socat.socket'] if service_domains | length > 0 else [] }}"
|
|
container_auto_update: "{{ service_auto_update }}"
|
|
|
|
- name: Reverse proxy for {{ service_name }}
|
|
ansible.builtin.include_tasks: proxy.yaml
|
|
when: service_domains | length > 0
|