18_swarm.ymlΒΆ

---
DEPLOYMENT_MODE: "{{ 'swarm' if (groups['svc-swarm-node'] | default([]) | length) > 1 else 'compose' }}"

SWARM_CLUSTER_AVAILABLE: "{{ (groups['svc-swarm-node'] | default([]) | length) > 0 }}"

# Exception: a role default would be invisible to the by-path include in
# roles/svc-db-openldap/tasks/01_docker.yml, which reaches into
# roles/sys-svc-compose/tasks/utils/post_deploy.yml after the role has finished.
swarm_stack_converge_retries: 600

IS_STACK_HOST: >-
  {{ DEPLOYMENT_MODE == 'compose'
     or inventory_hostname in (groups['svc-swarm-manager'] | default([])) }}

IS_BACKUP_HOST: >-
  {{ group_names | select('match', '^svc-bkp-') | list | length > 0 }}

STACK_HOST: >-
  {{ (groups['svc-swarm-manager'] | default([]))[0] | default(inventory_hostname) }}

swarm_stack_fatal_grace: 180

SWARM_INGRESS_GUARDED: "{{ swarm_ingress_endpoints.stdout_lines | swarm_ingress_published | swarm_ingress_guarded(lookup('applications') | swarm_public_ports) }}"

SWARM_INGRESS_PEERS: "{{ swarm_ingress_nodes.stdout_lines | swarm_node_addresses }}"

swarm:
  manager:
    advertise_addr: >-
      {{ lookup('mesh_address', STACK_HOST) if (WIREGUARD_ENABLED | bool) else '' }}
  network:
    encryption: true
  registry:
    host: "{{ (groups['svc-swarm-manager'] | default([]))[0] | default('') }}"
    port: 5000

SWARM_REGISTRY_PREFIX: >-
  {{
    (swarm.registry.host ~ ':' ~ swarm.registry.port ~ '/')
    if (
      DEPLOYMENT_MODE == 'swarm'
      and (swarm.registry.host | length > 0)
    )
    else ''
  }}