From 34c8d1926f84193d31336cfb1bfa444d96bd38fc Mon Sep 17 00:00:00 2001 From: Emilien Mantel Date: Tue, 30 Aug 2016 11:06:38 +0200 Subject: [PATCH 1/2] Vhost state (closes #19) --- doc/vhost.md | 3 +-- tasks/vhost.yml | 12 +++++------- tests/test.yml | 6 +++--- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/doc/vhost.md b/doc/vhost.md index f5a8510..6ceff2c 100644 --- a/doc/vhost.md +++ b/doc/vhost.md @@ -11,8 +11,7 @@ Common - `name`: (M) Domain or list of domain used. - `template`: (D) template used to create vhost. Optional if you set `delete` to true or using `redirect_tor`. - `filename`: (O) Specify filename in /etc/nginx/sites-*. Do NOT specify default (reserved keyword). -- `enable`: (O) Enable the vhost (default is true) -- `delete`: (O) Delete the vhost (default is false) +- `state`: (O) Vhost status. Can be "present" (default), "absent" and "disabled". - `redirect_from`: (O) Domain list to redirect to the first `name`. You can use this key to redirect non-www to www - `redirect_to`: (O) Redirect all requests to this domain. Please set scheme (http:// or https:// or $sheme). - `headers`: (O) Set additionals header as key/value list. You can append "always" to the value. Show [nginx doc](http://nginx.org/en/docs/http/ngx_http_headers_module.html). diff --git a/tasks/vhost.yml b/tasks/vhost.yml index a6f630d..64a0fd0 100644 --- a/tasks/vhost.yml +++ b/tasks/vhost.yml @@ -36,7 +36,7 @@ when: > item.root is not defined and (item.template is defined and item.template not in nginx_templates_no_dir) and - (item.delete is not defined or not item.delete) and + (item.state is not defined or not item.state != 'absent') and item.redirect_to is not defined - name: TEMPLATE | Create vhosts @@ -45,13 +45,13 @@ dest={{ nginx_etc_dir }}/sites-available/{{ item.filename | default(item.name if item.name is string else item.name[0]) }} with_items: "{{ nginx_vhosts }}" notify: ['reload nginx', 'restart nginx freebsd'] - when: item.delete is not defined or not item.delete + when: item.state is not defined or not item.state != 'absent' - name: FILE | Delete vhosts file: path={{ nginx_etc_dir }}/sites-available/{{ item.filename | default(item.name if item.name is string else item.name[0]) }} state=absent with_items: "{{ nginx_vhosts }}" notify: ['reload nginx', 'restart nginx freebsd'] - when: item.delete is defined and item.delete + when: item.state is defined and item.state == 'absent' - name: FILE | Enable vhosts file: > @@ -61,15 +61,13 @@ with_items: "{{ nginx_vhosts }}" notify: ['reload nginx', 'restart nginx freebsd'] when: > - ((item.enable is not defined) or - (item.enable is defined and item.enable)) and - (item.delete is not defined or not item.delete) + item.state is not defined or item.state == 'present' - name: FILE | Disable vhosts 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_vhosts }}" notify: ['reload nginx', 'restart nginx freebsd'] - when: (item.enable is defined and not item.enable) or (item.delete is defined and item.delete) + when: item.state is defined and item.state == 'disabled' - name: FILE | Delete default vhost when explicitely defined file: > diff --git a/tests/test.yml b/tests/test.yml index b246519..a5d198a 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -165,7 +165,7 @@ headers: 'X-proxyfied': '1' - name: 'deleted.local' - delete: true + state: 'absent' - name: 'redirect-to.local' redirect_to: 'http://test.local' - name: 'backuppc.local' @@ -220,7 +220,7 @@ - name: -- VERIFY VHOSTS -- command: "curl -H 'Host: {{ item.name if item.name is string else item.name[0] }}' http://127.0.0.1{% if item.listen is defined %}:{{ item.listen[0] }}{% endif %}/" with_items: "{{ nginx_vhosts }}" - when: item.delete is undefined or not item.delete + when: item.state is undefined or item.state != "absent" changed_when: false - name: -- VERIFY FORBIDDEN -- command: "curl -H 'Host: test-php-index.local' http://127.0.0.1/phpinfo.php" @@ -230,7 +230,7 @@ - name: -- VERIFY REDIRECT VHOSTS -- command: "curl -H 'Host: {{ item.redirect_from[0] }}' http://127.0.0.1/" with_items: "{{ nginx_vhosts }}" - when: item.redirect_from is defined and (item.delete is undefined or not item.delete) + when: item.redirect_from is defined and (item.state is undefined or item.state != "absent") changed_when: false register: r failed_when: r.stdout.find('301 Moved Permanently') == -1 From cf662acdd7608d696095f6aba6e9660402444922 Mon Sep 17 00:00:00 2001 From: Emilien Mantel Date: Tue, 30 Aug 2016 11:18:14 +0200 Subject: [PATCH 2/2] Fix condition when creating vhosts --- tasks/vhost.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/vhost.yml b/tasks/vhost.yml index 64a0fd0..8f57197 100644 --- a/tasks/vhost.yml +++ b/tasks/vhost.yml @@ -45,7 +45,7 @@ dest={{ nginx_etc_dir }}/sites-available/{{ item.filename | default(item.name if item.name is string else item.name[0]) }} with_items: "{{ nginx_vhosts }}" notify: ['reload nginx', 'restart nginx freebsd'] - when: item.state is not defined or not item.state != 'absent' + when: item.state is not defined or item.state != 'absent' - name: FILE | Delete vhosts file: path={{ nginx_etc_dir }}/sites-available/{{ item.filename | default(item.name if item.name is string else item.name[0]) }} state=absent