Эх сурвалжийг харах

Allow users to extend config files through template inheritance

Oskar Schöldström 8 жил өмнө
parent
commit
36cd4d3aec

+ 3 - 0
defaults/main.yml

@@ -12,6 +12,9 @@ nginx_ppa_version: stable
 # The name of the nginx apt/yum package to install.
 nginx_package_name: "nginx"
 
+nginx_conf_template: "nginx.conf.j2"
+nginx_vhost_template: "vhost.j2"
+
 nginx_worker_processes: "{{ ansible_processor_vcpus | default(ansible_processor_count) }}"
 nginx_worker_connections: "1024"
 nginx_multi_accept: "off"

+ 1 - 1
tasks/main.yml

@@ -30,7 +30,7 @@
 # Nginx setup.
 - name: Copy nginx configuration in place.
   template:
-    src: nginx.conf.j2
+    src: "{{ nginx_conf_template }}"
     dest: "{{ nginx_conf_file_path }}"
     owner: root
     group: "{{ root_group }}"

+ 1 - 1
tasks/vhosts.yml

@@ -14,7 +14,7 @@
 
 - name: Add managed vhost config files.
   template:
-    src: vhost.j2
+    src: "{{ nginx_vhost_template }}"
     dest: "{{ nginx_vhost_path }}/{{ item.server_name.split(' ')[0] }}.conf"
     force: yes
     owner: root

+ 14 - 0
templates/nginx.conf.j2

@@ -3,18 +3,25 @@ user  {{ nginx_user }};
 error_log  {{ nginx_error_log }};
 pid        {{ nginx_pidfile }};
 
+{% block worker %}
 worker_processes  {{ nginx_worker_processes }};
+{% endblock %}
 
+{% block events %}
 events {
     worker_connections  {{ nginx_worker_connections }};
     multi_accept {{ nginx_multi_accept }};
 }
+{% endblock %}
 
 {% if nginx_extra_conf_options %}
 {{ nginx_extra_conf_options }}
 {% endif %}
 
 http {
+    {% block http_begin %}{% endblock %}
+
+{% block http_basic %}
     include       {{ nginx_mime_file_path }};
     default_type  application/octet-stream;
 
@@ -39,11 +46,13 @@ http {
 {% if nginx_proxy_cache_path %}
     proxy_cache_path {{ nginx_proxy_cache_path }};
 {% endif %}
+{% endblock %}
 
 {% if nginx_extra_http_options %}
     {{ nginx_extra_http_options|indent(4, False) }}
 {% endif %}
 
+{% block http_upstream %}
 {% for upstream in nginx_upstreams %}
     upstream {{ upstream.name }} {
 {% if upstream.strategy is defined %}
@@ -57,9 +66,14 @@ http {
 {% endif %}
     }
 {% endfor %}
+{% endblock %}
 
+{% block http_includes %}
     include {{ nginx_conf_path }}/*.conf;
 {% if nginx_conf_path != nginx_vhost_path %}
     include {{ nginx_vhost_path }}/*;
 {% endif %}
+{% endblock %}
+
+    {% block http_end %}{% endblock %}
 }

+ 15 - 0
templates/vhost.j2

@@ -1,4 +1,16 @@
+{% block server_redirect %}
+{% if item.server_name_redirect is defined %}
+    listen       {{ item.listen | default('80') }};
+    server_name  {{ item.server_name_redirect }};
+    return       301 $scheme://{{ item.server_name.split(' ')[0] }}$request_uri;
+}
+{% endif %}
+{% endblock %}
+
 server {
+    {% block server_begin %}{% endblock %}
+
+    {% block server_basic -%}
     listen {{ item.listen | default('80') }};
 
 {% if item.server_name is defined %}
@@ -24,6 +36,9 @@ server {
 {% if item.return is defined %}
     return {{ item.return }};
 {% endif %}
+    {% endblock %}
+
+    {% block server_end %}{% endblock %}
 
 {% if item.extra_parameters is defined %}
     {{ item.extra_parameters|indent(4) }}