91 lines
3.4 KiB
YAML
91 lines
3.4 KiB
YAML
---
|
|
|
|
- name: FAIL | Check filenames
|
|
fail: msg="Forbidden keyword default on site {{ item.name if item.name is string else item.name[0] }}"
|
|
when: item.filename is defined and item.filename == 'default'
|
|
with_items: "{{ nginx_sites }}"
|
|
|
|
- name: FAIL | Check HTTPS redir and proto
|
|
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)
|
|
with_items: "{{ nginx_sites }}"
|
|
|
|
- name: FILE | Create root directory
|
|
file: >
|
|
path={{ nginx_root }}
|
|
state=directory
|
|
|
|
- name: FILE | Create root public folders (foreach nginx_sites)
|
|
file: >
|
|
path={{ nginx_root }}/{{ item.filename | default(item.name if item.name is string else item.name[0]) }}/public
|
|
state=directory
|
|
owner={{ item.owner | default(nginx_user) }}
|
|
group={{ item.group | default(nginx_user) }}
|
|
mode={{ item.mode | default('0755') }}
|
|
with_items: "{{ 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
|
|
|
|
- name: TEMPLATE | Create sites
|
|
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.filename | default(item.name if item.name is string else item.name[0]) }}
|
|
with_items: "{{ nginx_sites }}"
|
|
notify: ['reload nginx', 'restart nginx freebsd']
|
|
when: item.state is not defined or item.state != 'absent'
|
|
|
|
- name: FILE | Delete sites
|
|
file: path={{ nginx_etc_dir }}/{{ item.1 }}/{{ item.0.filename | default(item.0.name if item.0.name is string else item.0.name[0]) }} state=absent
|
|
with_nested:
|
|
- "{{ nginx_sites }}"
|
|
- ['sites-available', 'sites-enabled']
|
|
notify: ['reload nginx', 'restart nginx freebsd']
|
|
when: item.state is defined and item.state == 'absent'
|
|
|
|
- name: FILE | Enable sites
|
|
file: >
|
|
src={{ nginx_etc_dir }}/sites-available/{{ item.filename | default(item.name if item.name is string else item.name[0]) }}
|
|
dest={{ nginx_etc_dir }}/sites-enabled/{{ item.filename | default(item.name if item.name is string else item.name[0]) }}
|
|
state=link
|
|
with_items: "{{ nginx_sites }}"
|
|
notify: ['reload nginx', 'restart nginx freebsd']
|
|
when: >
|
|
item.state is not defined or item.state == 'present'
|
|
|
|
- name: FILE | Disable sites
|
|
file: path={{ nginx_etc_dir}}/sites-enabled/{{ item.filename | default(item.name if item.name is string else item.name[0]) }} state=absent
|
|
with_items: "{{ nginx_sites }}"
|
|
notify: ['reload nginx', 'restart nginx freebsd']
|
|
when: item.state is defined and item.state == 'disabled'
|
|
|
|
- name: FILE | Delete default site when explicitely defined
|
|
file: >
|
|
path={{ nginx_etc_dir }}/sites-enabled/default
|
|
state=absent
|
|
notify: ['reload nginx', 'restart nginx freebsd']
|
|
when: nginx_default_site is not none
|
|
|
|
- name: FILE | Auto set default site
|
|
file: >
|
|
src={{ nginx_etc_dir }}/sites-available/default
|
|
dest={{ nginx_etc_dir }}/sites-enabled/default
|
|
state=link
|
|
notify: ['reload nginx', 'restart nginx freebsd']
|
|
when: nginx_default_site is none
|
|
|
|
- name: TEMPLATE | Deploy facts
|
|
template:
|
|
src=etc/ansible/facts.d/nginx.fact.j2
|
|
dest=/etc/ansible/facts.d/nginx.fact
|
|
mode=0644
|
|
register: fact
|
|
|
|
- name: SETUP
|
|
action: setup
|
|
when: fact.changed
|