From 4b3b857733375430e612e06c7631ca01955f9519 Mon Sep 17 00:00:00 2001 From: Emilien Mantel Date: Thu, 26 Oct 2017 15:33:00 +0200 Subject: [PATCH] Remove heavy code (nginx filename) using a filter --- filter_plugins/nginx.py | 20 ++++++++++++++++++++ tasks/site.yml | 14 +++++++------- templates/etc/nginx/sites-available/_base.j2 | 2 +- 3 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 filter_plugins/nginx.py diff --git a/filter_plugins/nginx.py b/filter_plugins/nginx.py new file mode 100644 index 0000000..45d103c --- /dev/null +++ b/filter_plugins/nginx.py @@ -0,0 +1,20 @@ +def nginx_site_filename(site): + if site.has_key('filename'): + return site['filename'] + else: + return nginx_site_name(site) + +def nginx_site_name(site): + if isinstance(site['name'], list): + return site['name'][0] + else: + return site['name'] + +class FilterModule(object): + ''' Nginx module ''' + + def filters(self): + return { + 'nginx_site_filename': nginx_site_filename, + 'nginx_site_name': nginx_site_name + } diff --git a/tasks/site.yml b/tasks/site.yml index a8c2fbe..23069c4 100644 --- a/tasks/site.yml +++ b/tasks/site.yml @@ -2,7 +2,7 @@ - name: FAIL | Check filenames fail: - msg: "Forbidden keyword default on site {{ item.name if item.name is string else item.name.0 }}" + msg: "Forbidden keyword default on site {{ item | nginx_site_name }}" when: item.filename is defined and item.filename == 'default' with_items: "{{ nginx_sites }}" @@ -21,7 +21,7 @@ - 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" + path: "{{ nginx_root }}/{{ item | nginx_site_filename }}/public" state: directory owner: "{{ item.owner | default(nginx_user) }}" group: "{{ item.group | default(nginx_user) }}" @@ -36,14 +36,14 @@ - 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) }}" + dest: "{{ nginx_etc_dir }}/sites-available/{{ item | nginx_site_filename }}" 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) }}" + path: "{{ nginx_etc_dir }}/{{ item.1 }}/{{ item.0 | nginx_site_filename }}" state: absent with_nested: - "{{ nginx_sites }}" @@ -53,8 +53,8 @@ - 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) }}" + src: "{{ nginx_etc_dir }}/sites-available/{{ item | nginx_site_filename }}" + dest: "{{ nginx_etc_dir }}/sites-enabled/{{ item | nginx_site_filename }}" state: link with_items: "{{ nginx_sites }}" notify: ['reload nginx', 'restart nginx freebsd'] @@ -63,7 +63,7 @@ - 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) }}" + path: "{{ nginx_etc_dir}}/sites-enabled/{{ item | nginx_site_filename }}" state: absent with_items: "{{ nginx_sites }}" notify: ['reload nginx', 'restart nginx freebsd'] diff --git a/templates/etc/nginx/sites-available/_base.j2 b/templates/etc/nginx/sites-available/_base.j2 index e3300cc..6f590fa 100644 --- a/templates/etc/nginx/sites-available/_base.j2 +++ b/templates/etc/nginx/sites-available/_base.j2 @@ -1,5 +1,5 @@ {% set __proto = item.proto | default(['http']) %} -{% set __main_name = item.filename | default(item.name if item.name is string else item.name[0]) %} +{% set __main_name = item | nginx_site_filename %} {% set __listen = item.listen | default([80]) %} {% set __listen_ssl = item.listen_ssl | default([443]) %} {% set __http_proxy_protocol_port = item.http_proxy_protocol_port | default([]) %}