From af3930a58a2f993669e1c459a530324b0ed4a5e0 Mon Sep 17 00:00:00 2001 From: Emilien Mantel Date: Wed, 11 May 2016 17:21:52 +0200 Subject: [PATCH] New feature: upstream state (remove upstream if needed) --- doc/upstream.md | 2 ++ tasks/upstream.yml | 9 +++++++++ tests/test.yml | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/doc/upstream.md b/doc/upstream.md index 94d04df..7d3147d 100644 --- a/doc/upstream.md +++ b/doc/upstream.md @@ -11,6 +11,7 @@ Upstream params - `name`: upstream name. Can be use in vhost with *proxy_pass http://upstream_name* - `params`: list of param (hash, zone...) - `servers`: each upstream MUST have at least 1 server +- `state`: Optional. Can be 'absent' or 'present' Server params ------------- @@ -38,4 +39,5 @@ nginx_upstreams: max_conns: 150 weight: 10 down: false + state: 'present' ``` diff --git a/tasks/upstream.yml b/tasks/upstream.yml index 4092630..8a9ec8f 100644 --- a/tasks/upstream.yml +++ b/tasks/upstream.yml @@ -12,4 +12,13 @@ src=etc/nginx/upstream/upstream.conf.j2 dest={{ nginx_etc_dir }}/conf.d/upstream-{{ item.name }}.conf with_items: "{{ nginx_upstreams }}" + when: item.state is not defined or item.state == 'present' + notify: reload nginx + +- name: FILE | Delete other upstreams + file: > + path={{ nginx_etc_dir }}/conf.d/upstream-{{ item.name }}.conf + state=absent + with_items: "{{ nginx_upstreams }}" + when: item.state is defined and item.state == 'absent' notify: reload nginx diff --git a/tests/test.yml b/tests/test.yml index 3292e29..ec36356 100644 --- a/tests/test.yml +++ b/tests/test.yml @@ -24,6 +24,13 @@ max_conns: 150 weight: 10 down: false + - name: 'test-absent' + servers: + - path: '127.0.0.1:80' + max_conns: 150 + weight: 10 + down: false + state: 'absent' nginx_htpasswd: - name: 'hello' description: 'Please login!'