---
- name: Manage the composition of haproxy as a docker swarm service
  block:
  - name: Create the local haproxy configuration directory
    file: dest=/etc/haproxy state=directory mode='0755'

  - name: Create the local directory for the socket volume
    file: dest={{ haproxy_docker_socket_dir }} state=directory mode='0755'

  - name: Install a bare haproxy configuration if there's none
    copy: src=haproxy-sample.cfg dest=/etc/haproxy/haproxy.cfg mode='0644' force=no

  tags: [ 'haproxy', 'docker_haproxy', 'docker_swarm', 'docker' ]

- name: Manage the composition of haproxy as a docker swarm service
  block:
  - name: Create the destination directory of the haproxy docker compose file
    file: dest={{ haproxy_docker_compose_dir }} state=directory mode='0755'

  - name: Install the docker compose file
    template: src=haproxy-docker-stack.yml.j2 dest={{ haproxy_docker_compose_dir }}/docker-haproxy-stack.yml mode='0644'

  - name: Create the overlay network that will be joined by the proxied services
    docker_network:
      name: '{{ haproxy_docker_overlay_network }}'
      driver: overlay
      scope: swarm

  - name: Run the docker compose file to start the service
    docker_stack:
      name: haproxy
      state: present
      compose:
        - '{{ haproxy_docker_compose_dir }}/docker-haproxy-stack.yml'
    run_once: True

  when: docker_swarm_manager_main_node is defined and docker_swarm_manager_main_node | bool
  tags: [ 'haproxy', 'docker_haproxy', 'docker_swarm', 'docker' ]