From de1969339aaec51a317e8666c77dd56db7813ad7 Mon Sep 17 00:00:00 2001 From: Dmitry Andreev Date: Tue, 30 Jul 2019 12:54:35 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B2=D0=B5=D1=80=D1=88=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BC=D0=B5=D1=85=D0=B0=D0=BD=D0=B8=D0=B7=D0=BC=20?= =?UTF-8?q?=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=B0=D0=BF=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B8=D0=BC=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tasks/main.yml | 18 +++++++---- templates/conf.d/upstreams.conf.j2 | 49 ++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 8 deletions(-) diff --git a/tasks/main.yml b/tasks/main.yml index b7334e8..db92f8d 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -51,17 +51,23 @@ dest: "/tmp/nginx_upstreams.yml" force: true register: "nginx_upstreams_download_result" + tags: + - configs + - upstreams -- name: "Read upstreams config" +- name: "Read upstreams config for nginx" slurp: src: "/tmp/nginx_upstreams.yml" - register: slurp_upstreams - -- name: Debug - debug: - msg: "{{ slurp_upstreams['content'] | b64decode | from_yaml }}" + register: upstreams_slurped + tags: + - configs + - upstreams - name: "Generate nginx upstreams config" template: src: conf.d/upstreams.conf.j2 dest: /etc/nginx/conf.d/upstreams.conf + notify: Reload nginx + tags: + - configs + - upstreams diff --git a/templates/conf.d/upstreams.conf.j2 b/templates/conf.d/upstreams.conf.j2 index 416cf90..e3f97a6 100644 --- a/templates/conf.d/upstreams.conf.j2 +++ b/templates/conf.d/upstreams.conf.j2 @@ -1,5 +1,50 @@ {{ ansible_managed | comment }} -{% for upstream in slurp_upstreams['content'] | b64decode | from_yaml %} - {{ upstream.server_name }} +{% if nginx_resolver_string | default(false) %} + resolver {{ nginx_resolver_string }}; +{% endif %} + +{% set upstreams_encoded = upstreams_slurped['content'] | b64decode | from_yaml %} + +## BEGIN upstreams set +{% for upstream in upstreams_encoded -%} + upstream {{ upstream.name }} { + {% for server in upstream.servers -%} + {% set additional_upstream_server_config -%} + {% if server.weight | default(false) %}weight={{ server.weight }}{% endif %} + {% if server.max_conns | default(false) %}max_conns={{ server.max_conns }}{% endif %} + {% if server.max_fails | default(false) %}max_fails={{ server.max_fails }}{% endif %} + {% if server.fail_timeout | default(false) %}fail_timeout={{ server.fail_timeout }}{% endif %} + {% if server.backup | default(false) %}backup{% endif %} + {% if server.down | default(false) %}down{% endif %} + {% endset %} + server {{ server.name }} {{ additional_upstream_server_config | replace("\n", " ") }}; + {% endfor %} + } {% endfor %} +## END upstreams set + +## BEGIN servers set +{% for upstream in upstreams_encoded -%} + server { + listen {{ nginx_listen_addr }}:{{ nginx_listen_port }}; + server_name {{ upstream.external_domains | join(" ") }}; + + location / { + proxy_pass http://{{ upstream.name }}; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + {% if upstream.additional_location_config | default(false) -%} + {{ upstream.additional_location_config }} + {% endif %} + } + + {% if upstream.additional_server_config | default(false) -%} + {{ upstream.additional_server_config }} + {% endif %} + } +{% endfor %} +## END servers set