From 75a2372b14904913cb6333df4fcbf9a915d017ad Mon Sep 17 00:00:00 2001 From: Michael Palmer Date: Fri, 7 Apr 2017 11:40:00 -0700 Subject: [PATCH] init feature add --- defaults/main.yml | 5 +++++ tasks/main.yml | 3 +++ tasks/stream.yml | 21 +++++++++++++++++++++ templates/nginx.conf.j2 | 6 ++++++ templates/streams.j2 | 7 +++++++ vars/Debian.yml | 1 + 6 files changed, 43 insertions(+) create mode 100644 tasks/stream.yml create mode 100644 templates/streams.j2 diff --git a/defaults/main.yml b/defaults/main.yml index cd139d9..9e096b0 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -64,6 +64,11 @@ nginx_vhosts: [] # error_log: "" # extra_parameters: "" # Can be used to add extra config blocks (multiline). +nginx_streams_filename: "streams.conf" +nginx_streams: [] +# Example stream below. only available option is extra_parameters. +# - extra_parameters: "" # Can be used to add extra config blocks (multiline). + nginx_upstreams: [] # - name: myapp1 # strategy: "ip_hash" # "least_conn", etc. diff --git a/tasks/main.yml b/tasks/main.yml index 6c420fe..678e0ef 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -27,6 +27,9 @@ # Vhost configuration. - include: vhosts.yml +# Stream configuration +- include: stream.yml + # Nginx setup. - name: Copy nginx configuration in place. template: diff --git a/tasks/stream.yml b/tasks/stream.yml new file mode 100644 index 0000000..6503481 --- /dev/null +++ b/tasks/stream.yml @@ -0,0 +1,21 @@ +--- +- name: Ensure nginx_stream_path exists. + file: + path: "{{ nginx_stream_path }}" + state: directory + notify: reload nginx + +- name: Add managed stream config file (if any streams are configured). + template: + src: streams.j2 + dest: "{{ nginx_stream_path }}/{{ nginx_streams_filename }}" + mode: 0644 + when: nginx_streams|length > 0 + notify: reload nginx + +- name: Remove managed stream config file (if no streams are configured). + file: + path: "{{ nginx_stream_path }}/{{ nginx_streams_filename }}" + state: absent + when: nginx_streams|length == 0 + notify: reload nginx diff --git a/templates/nginx.conf.j2 b/templates/nginx.conf.j2 index 262e54a..e83d320 100644 --- a/templates/nginx.conf.j2 +++ b/templates/nginx.conf.j2 @@ -14,6 +14,12 @@ events { {{ nginx_extra_conf_options }} {% endif %} +{% if nginx_stream_path %} +stream { + include {{ nginx_stream_path }}/*; +} +{% endif %} + http { include {{ nginx_mime_file_path }}; default_type application/octet-stream; diff --git a/templates/streams.j2 b/templates/streams.j2 new file mode 100644 index 0000000..b6214d7 --- /dev/null +++ b/templates/streams.j2 @@ -0,0 +1,7 @@ +{% for stream in nginx_streams %} +server { +{% if stream.extra_parameters is defined %} + {{ stream.extra_parameters|indent(4) }} +{% endif %} +} +{% endfor %} diff --git a/vars/Debian.yml b/vars/Debian.yml index cb12770..6c3693b 100644 --- a/vars/Debian.yml +++ b/vars/Debian.yml @@ -4,6 +4,7 @@ nginx_conf_path: /etc/nginx/conf.d nginx_conf_file_path: /etc/nginx/nginx.conf nginx_mime_file_path: /etc/nginx/mime.types nginx_pidfile: /run/nginx.pid +nginx_stream_path: /etc/nginx/stream-enabled nginx_vhost_path: /etc/nginx/sites-enabled nginx_default_vhost_path: /etc/nginx/sites-enabled/default __nginx_user: "www-data"