---
version: '2.1'
services:
{% for i in range(cluster_node_count|default(1)|int) %}
  {% set container_postfix = loop.index %}
  {% set awx_sdb_port_start = 7899 + (loop.index0*1000) | int %}
  {% set awx_sdb_port_end = 7999 + (loop.index0*1000) | int %}
  # Primary AWX Development Container
  awx_{{ container_postfix }}:
    hostname: {{ awx_prefix }}_{{ container_postfix }}
    networks:
      ansible-net:
        aliases:
          - {{ awx_prefix }}_{{ container_postfix }}
      traefik-net:
        aliases:
          - {{ awx_prefix }}_{{ container_postfix }}
    restart: unless-stopped
    environment:
      http_proxy:
      https_proxy:
      no_proxy:
{% if cluster_node_count == 1 %}
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}.service={{ awx_prefix }}_{{ container_postfix }}"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}.entrypoints=http"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}.rule=Host(`{{ awx_prefix }}.seboto.my-wan.de`) || Host(`ansible-{{ awx_prefix }}.seboto.my-wan.de`)"
      - "traefik.http.middlewares.{{ awx_prefix }}_{{ container_postfix }}-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}.middlewares={{ awx_prefix }}_{{ container_postfix }}-https-redirect"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}-secure.entrypoints=https"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}-secure.rule=Host(`{{ awx_prefix }}.seboto.my-wan.de`) || Host(`ansible-{{ awx_prefix }}.seboto.my-wan.de`)"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}-secure.tls=true"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}-secure.tls.domains[0].main={{ awx_prefix }}.seboto.my-wan.de"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}-secure.tls.domains[0].sans=ansible-{{ awx_prefix }}.seboto.my-wan.de"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}-secure.tls.certresolver=http"
      - "traefik.http.routers.{{ awx_prefix }}_{{ container_postfix }}-secure.service={{ awx_prefix }}_{{ container_postfix }}"
      - "traefik.http.services.{{ awx_prefix }}_{{ container_postfix }}.loadbalancer.server.port={{ traefik_http_port }}"
      - "traefik.docker.network=traefik_proxy"
{% endif %}
#    volumes:
#      - "/home/awx/certs/ldap.conf:/etc/openldap/ldap.conf:ro"
#      - "/etc/pki/ca-trust/source/anchors:/etc/pki/ca-trust/source/anchors:ro"
#      - "/etc/pki/ca-trust/extracted:/etc/pki/ca-trust/extracted:ro"
#      - "/etc/pki/tls/private/ansible01.warburg.com.pem:/etc/nginx/nginx.key:ro"
#      - "/etc/pki/tls/certs/ansible01.warburg.com.crt:/etc/nginx/nginx.crt:ro"
  redis_{{ container_postfix }}:
    restart: unless-stopped
    networks:
      ansible-net:
        aliases:
          - redis_{{ container_postfix }}
    restart: unless-stopped
{% endfor %}
{% if cluster_node_count|default(1)|int > 1 %}
  haproxy:
    hostname: haproxy
    networks:
      ansible-net:
        aliases:
          - haproxy
      traefik-net:
        aliases:
          - haproxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.haproxy.service=haproxy"
      - "traefik.http.routers.haproxy.entrypoints=http"
      - "traefik.http.routers.haproxy.rule=Host(`{{ awx_prefix }}.seboto.my-wan.de`) || Host(`ansible-{{ awx_prefix }}.seboto.my-wan.de`)"
      - "traefik.http.middlewares.haproxy-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.haproxy.middlewares=haproxy-https-redirect"
      - "traefik.http.routers.haproxy-secure.entrypoints=https"
      - "traefik.http.routers.haproxy-secure.rule=Host(`{{ awx_prefix }}.seboto.my-wan.de`) || Host(`ansible-{{ awx_prefix }}.seboto.my-wan.de`)"
      - "traefik.http.routers.haproxy-secure.tls=true"
      - "traefik.http.routers.haproxy-secure.tls.domains[0].main={{ awx_prefix }}.seboto.my-wan.de"
      - "traefik.http.routers.haproxy-secure.tls.domains[0].sans=ansible-{{ awx_prefix }}.seboto.my-wan.de"
      - "traefik.http.routers.haproxy-secure.tls.certresolver=http"
      - "traefik.http.routers.haproxy-secure.service=haproxy"
      - "traefik.http.services.haproxy.loadbalancer.server.port={{ traefik_http_port }}"
      - "traefik.docker.network=traefik_proxy"
{% endif %}
  postgres:
    networks:
      ansible-net:
        aliases:
          - postgres
    restart: unless-stopped
    volumes:
      - "{{ awx_composedir }}/initdb.d:/docker-entrypoint-initdb.d:ro"

volumes:
  awx_db:
    name: {{ awx_prefix }}_awx_db
    driver: local
    driver_opts:
      type: none
      o: bind
      device: {{ pg_volume_datapath | default(awx_composedir + '/postgres/data') }}

networks:
  ansible-net:
  traefik-net:
    external: true
    name: traefik_proxy
...
