83 lines
3.1 KiB
YAML
83 lines
3.1 KiB
YAML
---
|
|
- name: Validate inputs
|
|
ansible.builtin.import_tasks: validation.yaml
|
|
|
|
- name: Database for {{ service_name }}
|
|
ansible.builtin.include_tasks: database.yaml
|
|
when: _service_setup_database
|
|
|
|
- name: Redis for {{ service_name }}
|
|
ansible.builtin.include_tasks: redis.yaml
|
|
when: service_redis
|
|
|
|
- name: Secrets for {{ service_name }}
|
|
ansible.builtin.include_tasks: secrets.yaml
|
|
when: _service_container_secrets | length > 0
|
|
|
|
- name: Host mounts for {{ service_name }}
|
|
ansible.builtin.include_tasks: host_mounts.yaml
|
|
when: >-
|
|
(_service_all_template_mounts + _service_all_copy_mounts) | length > 0
|
|
or service_container_pinp
|
|
or (_service_additional_containers | selectattr('pinp') | length > 0)
|
|
|
|
- name: Additional containers for {{ service_name }}
|
|
ansible.builtin.include_tasks: additional.yaml
|
|
when: _service_additional_containers | length > 0
|
|
|
|
- name: Native socket for {{ service_name }}
|
|
ansible.builtin.include_role:
|
|
name: uumas.general.systemd_socket
|
|
vars:
|
|
systemd_socket_name: "{{ service_name }}"
|
|
systemd_socket_requires:
|
|
- "{{ service_name }}.service"
|
|
when: _service_native_socket
|
|
|
|
- name: Main container for {{ service_name }}
|
|
ansible.builtin.import_role:
|
|
name: container
|
|
vars:
|
|
container_name: "{{ service_name }}"
|
|
container_image: "{{ _service_container.image }}"
|
|
container_entrypoint: "{{ _service_container.entrypoint }}"
|
|
container_command: "{{ _service_container.command }}"
|
|
container_user: "{{ _service_container.user }}"
|
|
container_mounts: "{{ _service_container.mounts }}"
|
|
container_devices: "{{ service_container_devices }}"
|
|
container_publish_ports: "{{ _service_container_publish_ports }}"
|
|
container_networks: "{{ _service_container_networks }}"
|
|
container_secrets: "{{ _service_container_secrets }}"
|
|
container_env: "{{ _service_container.env }}"
|
|
container_add_capabilities: "{{ service_container_add_capabilities }}"
|
|
container_requires: "{{ _service_container_requires }}"
|
|
container_wants: "{{ _service_container_wants }}"
|
|
container_auto_update: "{{ service_auto_update }}"
|
|
|
|
- name: Caddy socket proxy for http of {{ service_name }}
|
|
ansible.builtin.include_role:
|
|
name: caddy_socket_proxy
|
|
when: service_container_http_port > 0
|
|
vars:
|
|
caddy_socket_proxy_service_name: "{{ service_name }}"
|
|
caddy_socket_proxy_target_http_port: "{{ service_container_http_port }}"
|
|
caddy_socket_proxy_container_ip: >-
|
|
{{ service_container_ip | ansible.utils.ipmath(257) if _service_static_ip else '' }}
|
|
caddy_socket_proxy_auto_update: "{{ service_auto_update }}"
|
|
|
|
- name: Socat for socket published ports of {{ service_name }}
|
|
ansible.builtin.include_role:
|
|
name: socat
|
|
loop: "{{ _service_container_publish_socket_ports }}"
|
|
loop_control:
|
|
loop_var: publish_port
|
|
vars:
|
|
socat_service_name: "{{ service_name }}-{{ publish_port.name }}"
|
|
socat_target_container: "{{ service_name }}"
|
|
socat_target_http_port: "{{ publish_port.container_port }}"
|
|
socat_auto_update: "{{ service_auto_update }}"
|
|
|
|
- name: Reverse proxy for {{ service_name }}
|
|
ansible.builtin.include_tasks: proxy.yaml
|
|
when: service_domains | length > 0
|