--- - name: FAIL | Check filenames ansible.builtin.fail: msg: "Forbidden keyword default on site {{ item | nginx_site_name }}" when: item.filename is defined and item.filename == 'default' loop: "{{ nginx_sites }}" loop_control: label: "{{ item | nginx_site_name }}" - name: FAIL | Check HTTPS redir and proto ansible.builtin.fail: msg: "You can't have HTTP proto and HTTPS redirection at the same time" when: ((item.proto is defined and 'http' in item.proto) or (item.proto is not defined)) and (item.redirect_http is defined and item.redirect_http) loop: "{{ nginx_sites }}" loop_control: label: "{{ item | nginx_site_name }}" - name: FILE | Create root directory ansible.builtin.file: path: "{{ nginx_root }}" state: directory mode: 0755 owner: root group: root - name: FILE | Create root public folders (foreach nginx_sites) ansible.builtin.file: path: "{{ nginx_root }}/{{ item | nginx_site_filename }}/public" state: directory owner: "{{ item.owner | default(nginx_user) }}" group: "{{ item.group | default(nginx_user) }}" mode: "{{ item.mode | default('0755') }}" loop: "{{ nginx_sites }}" when: > item.root is not defined and (item.template is defined and item.template not in nginx_templates_no_dir) and (item.state is not defined or not item.state != 'absent') and item.redirect_to is not defined loop_control: label: "{{ item | nginx_site_name }}" - name: TEMPLATE | Create sites ansible.builtin.template: src: "etc/nginx/sites-available/{{ item.template if item.redirect_to is not defined else '_redirect' }}.j2" dest: "{{ nginx_etc_dir }}/sites-available/{{ item | nginx_site_filename }}" mode: 0644 owner: root group: root notify: 'Reload nginx' when: (item.state is not defined or item.state != 'absent') and item.custom_template is not defined loop: "{{ nginx_sites }}" loop_control: label: "{{ item | nginx_site_name }}" - name: TEMPLATE | Create sites with preconfigured template ansible.builtin.template: src: "{{ item.custom_template }}" dest: "{{ nginx_etc_dir }}/sites-available/{{ item | nginx_site_filename }}" mode: 0644 owner: root group: root notify: 'Reload nginx' when: (item.state is not defined or item.state != 'absent') and item.custom_template is defined loop: "{{ nginx_sites }}" loop_control: label: "{{ item | nginx_site_name }}" - name: FILE | Delete sites ansible.builtin.file: path: "{{ nginx_etc_dir }}/{{ item.1 }}/{{ item.0 | nginx_site_filename }}" state: absent loop: "{{ nginx_sites | product(dirs) | list }}" notify: 'Reload nginx' when: item.0.state is defined and item.0.state == 'absent' vars: dirs: ['sites-available', 'sites-enabled'] loop_control: label: "{{ nginx_etc_dir }}/{{ item.1 }}/{{ item.0 | nginx_site_filename }}" - name: FILE | Enable sites ansible.builtin.file: src: "{{ nginx_etc_dir }}/sites-available/{{ item | nginx_site_filename }}" dest: "{{ nginx_etc_dir }}/sites-enabled/{{ item | nginx_site_filename }}" state: link loop: "{{ nginx_sites }}" notify: 'Reload nginx' when: > item.state is not defined or item.state == 'present' loop_control: label: "{{ item | nginx_site_name }}" - name: FILE | Disable sites ansible.builtin.file: path: "{{ nginx_etc_dir }}/sites-enabled/{{ item | nginx_site_filename }}" state: absent loop: "{{ nginx_sites }}" notify: 'Reload nginx' when: item.state is defined and item.state == 'disabled' loop_control: label: "{{ item | nginx_site_name }}" - name: FILE | Delete default site when explicitely defined ansible.builtin.file: path: "{{ nginx_etc_dir }}/sites-enabled/default" state: absent notify: 'Reload nginx' when: nginx_default_site is not none - name: FILE | Auto set default site ansible.builtin.file: src: "{{ nginx_etc_dir }}/sites-available/default" dest: "{{ nginx_etc_dir }}/sites-enabled/default" state: link notify: 'Reload nginx' when: nginx_default_site is none - name: TEMPLATE | Deploy facts ansible.builtin.template: src: etc/ansible/facts.d/nginx.fact.j2 dest: /etc/ansible/facts.d/nginx.fact mode: 0644 notify: ['Setup']