---
- name: Install NGINX
  apt:
    update_cache: true
    name: nginx
  register: apt_result
  retries: 3
  until: apt_result is succeeded

- name: Copy proxypass snippets
  template:
    src: nginx/snippets/options-proxypass.conf.j2
    dest: /etc/nginx/snippets/options-proxypass.conf
    owner: root
    group: root
    mode: 0644

- name: Copy SSL snippets
  template:
    src: nginx/snippets/options-ssl.conf.j2
    dest: /etc/nginx/snippets/options-ssl.{{ item.name }}.conf
    owner: root
    group: root
    mode: 0644
  loop: "{{ nginx.ssl }}"

- name: Disable default site
  file:
    dest: /etc/nginx/sites-enabled/default
    state: absent

- name: Copy reverse proxy sites
  when: reverseproxy is defined
  template:
    src: nginx/sites-available/{{ item }}.j2
    dest: /etc/nginx/sites-available/{{ item }}
    owner: root
    group: root
    mode: 0644
  loop:
    - reverseproxy
    - reverseproxy_redirect_dname
    - redirect
  notify: Reload nginx

- name: Activate reverse proxy sites
  when: reverseproxy is defined
  file:
    src: /etc/nginx/sites-available/{{ item }}
    dest: /etc/nginx/sites-enabled/{{ item }}
    owner: root
    group: root
    state: link
  loop:
    - reverseproxy
    - reverseproxy_redirect_dname
    - redirect
  notify: Reload nginx
  ignore_errors: "{{ ansible_check_mode }}"

- name: Copy service nginx configuration
  when: nginx.servers is defined and nginx.servers|length > 0
  template:
    src: nginx/sites-available/service.j2
    dest: /etc/nginx/sites-available/{{ nginx.service_name }}
    owner: root
    group: root
    mode: 0644
  notify: Reload nginx

- name: Activate local nginx service site
  when: nginx.servers is defined and nginx.servers|length > 0
  file:
    src: /etc/nginx/sites-available/{{ nginx.service_name }}
    dest: /etc/nginx/sites-enabled/{{ nginx.service_name }}
    owner: root
    group: root
    state: link
  notify: Reload nginx
  ignore_errors: "{{ ansible_check_mode }}"

- name: Copy 50x error page
  template:
    src: www/html/50x.html.j2
    dest: /var/www/html/50x.html
    owner: www-data
    group: www-data
    mode: 0644

- name: Copy robots.txt file
  when: nginx.deploy_robots_file
  template:
    src: www/html/robots.txt.j2
    dest: /var/www/html/robots.txt
    owner: www-data
    group: www-data
    mode: 0644

- name: Install passwords
  when: nginx.auth_passwd|length > 0
  template:
    src: nginx/passwd.j2
    dest: /etc/nginx/passwd
    mode: 0644

- name: Copy 401 error page
  when: nginx.auth_passwd|length > 0
  template:
    src: www/html/401.html.j2
    dest: /var/www/html/401.html
    owner: www-data
    group: www-data
    mode: 0644

- name: Indicate role in motd
  template:
    src: update-motd.d/05-service.j2
    dest: /etc/update-motd.d/05-nginx
    mode: 0755

- name: Clean old files
  file:
    path: "{{ item }}"
    state: absent
  loop:
    - /etc/nginx/snippets/options-ssl.conf
    - /var/www/custom_401.html
    - /var/www/robots.txt