#################################################
# DO Community Playbooks: Docker
#################################################
---
- hosts: all
  become: true
  vars_files:
    - vars/chd.yml

  tasks:
    - name: Copy dockerfile
      synchronize: src=app dest=/tmp

    - name: Build barker image
      docker_image:
        name: barker:latest
        build:
          path: /tmp/app/
          dockerfile: /tmp/app/Dockerfile
          pull: yes
        state: present
        source: build

    - name: Upload the .env file
      template:
        src: "files/chd.env"
        dest: "/var/lib/{{ host_directory }}/.env"

    - name: Create barker container
      docker_container:
        name: "{{ host_directory }}"
        image: barker:latest
        state: started
        restart_policy: "unless-stopped"
        env_file: "/var/lib/{{ host_directory }}/.env"
        links:
          - "postgres:db"
          - "redis:redis"
        published_ports:
          - "127.0.0.1:{{ host_port }}:80"
        volumes:
          - "/var/lib/{{ host_directory }}/frontend:/frontend"

    - name: Check if Nginx conf file exists
      stat: path="/etc/nginx/sites-available/{{ http_conf }}"
      register: status

    - name: No need to reload Nginx
      debug: msg= {{ "No need to reload Nginx as sites-available entries have already been created" }}

    - name: Set Nginx conf file
      when: status.stat.exists == false
      template:
        src: "files/nginx.conf.j2"
        dest: "/etc/nginx/sites-available/{{ http_conf }}"

    - name: Enable new site
      when: status.stat.exists == false
      file:
        src: "/etc/nginx/sites-available/{{ http_conf }}"
        dest: "/etc/nginx/sites-enabled/{{ http_conf }}"
        state: link
      notify: Reload Nginx

  handlers:
    - name: Reload Nginx
      service:
        name: nginx
        state: reloaded