---
- block:
    - name: Create the snippets directory
      file: dest={{ nginx_snippets_dir }} state=directory

    - name: Create the pki directory
      file: dest={{ pki_dir }}/nginx state=directory

    - name: Create the client body tmp directory, if needed
      file: dest={{ nginx_client_body_temp_dir }}/nginx state=directory owner=www-data group=www-data mode=0700
      when: nginx_client_body_temp_dir is defined

    - name: Create a dhparams file 2048 bits long
      shell: openssl dhparam -out {{ pki_dir }}/nginx/dhparams.pem 2048
      args:
        creates: '{{ pki_dir }}/nginx/dhparams.pem'
      when: nginx_ssl_level == 'intermediate'
      notify: Reload nginx

    - name: Install the supported configuration snippets
      template: src={{ item }}.j2 dest=/etc/nginx/snippets/{{ item }} owner=root group=root mode=0444
      with_items: '{{ nginx_conf_snippets }}'
      notify: Reload nginx

    - name: Download any remote snippet templates
      become: false
      get_url:
        url: '{{ item.url }}'
        dest: '/var/tmp/{{ item.name }}'
      loop: '{{ nginx_conf_remote_snippets }}'
      delegate_to: 'localhost'

    - name: Install any remote snippet configuration file
      template:
        src: '/var/tmp/{{ item.name }}'
        dest: '/etc/nginx/snippets/{{ item.name }}'
        owner: root
        group: root
        mode: 0444
      loop: '{{ nginx_conf_remote_snippets }}'
      notify: Reload nginx

    - name: Download any remote global config templates
      become: false
      get_url:
        url: '{{ item.url }}'
        dest: '/var/tmp/{{ item.name }}'
      loop: '{{ nginx_conf_remote_global_conf }}'
      delegate_to: 'localhost'

    - name: Install any remote global configuration file
      template:
        src: '/var/tmp/{{ item.name }}'
        dest: '/etc/nginx/conf.d/{{ item.name }}.conf'
        owner: root
        group: root
        mode: 0444
      loop: '{{ nginx_conf_remote_global_conf }}'
      notify: Reload nginx


    - name: Create the modules- directories
      file:
        dest: '/etc/nginx/modules-{{ item }}'
        state: directory
      loop:
        - available
        - enabled

    - name: Install the modules configurations
      copy:
        content: "load_module modules/{{ item.mod_name }};"
        dest: /etc/nginx/modules-available/{{ item.pkg_name }}.conf
      loop: '{{ nginx_org_modules }}'
      when:
        - item.enabled
        - nginx_use_nginx_org_repo

    - name: Enable the additional modules
      file:
        src: /etc/nginx/modules-available/{{ item.pkg_name }}.conf
        dest: /etc/nginx/modules-enabled/{{ item.pkg_name }}.conf
        state: link
      when: item.enabled
      loop: '{{ nginx_org_modules }}'

    - name: Disable the additional modules that we do not want installed
      file:
        dest: /etc/nginx/modules-enabled/{{ item.pkg_name }}.conf
        state: absent
      when: not item.enabled
      loop: '{{ nginx_org_modules }}'

    - name: Remove the default configuration when using the nginx.com repository
      file:
        dest: /etc/nginx/conf.d/default.conf
        state: absent
      when: nginx_use_nginx_org_repo

    - name: Install the main nginx.conf
      template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf mode=444
      notify: Reload nginx

  when: nginx_enabled
  tags: ['nginx', 'nginx_conf', 'nginx_virtualhost']

- block:
    - name: remove nginx default virtualhost
      file: dest=/etc/nginx/sites-enabled/default state=absent
      notify: Reload nginx

  when:
    - nginx_enabled
    - ansible_distribution_file_variety == "Debian"
  tags: ['nginx', 'nginx_conf', 'nginx_virtualhost']