Commit 06ffdde5 authored by Cédric Le Ninivin's avatar Cédric Le Ninivin

Introducing yakari mode for apache-frontend

parent 2995ad84
{% set cached_server_dict = {} -%}
{% set part_list = [] -%}
{% set generic_instance_parameter_dict = {'cache_access': cache_access,} -%}
[jinja2-template-base]
recipe = slapos.recipe.template:jinja2
rendered = {{ apache_configuration_directory }}/${:filename}
extra-context =
context =
key eggs_directory buildout:eggs-directory
key develop_eggs_directory buildout:develop-eggs-directory
${:extra-context}
{% for slave_instance in slave_instance_list -%}
{% set slave_reference = slave_instance.get('slave_reference') -%}
{% set slave_section_title = 'dynamic-template-slave-instance-%s' % slave_reference -%}
{% set slave_parameter_dict = generic_instance_parameter_dict.copy() -%}
{% if slave_instance.get('server_name', None) == None -%}
{% do slave_instance.__setitem__('server_name', "%s.%s" % (slave_instance.get('slave_reference').replace("-", "").lower(), domain)) -%}
{% endif -%}
{% if 'enable_cache' in slave_instance -%}
# The slave use cache
{% do cached_server_dict.__setitem__(slave_instance.get('server_name'), slave_instance.get('url')) -%}
{% endif -%}
{% do slave_instance.__setitem__('url', cache_access) -%}
{% do part_list.append(slave_section_title) -%}
[{{ slave_section_title }}]
< = jinja2-template-base
template = {{ template_slave_configuration }}
filename = {{ '%s.conf' % slave_reference }}
extensions = jinja2.ext.do
extra-context =
section slave_parameter {{ 'slave-instance-%s-configuration' % slave_reference }}
raw domain {{ domain }}
raw https_port {{ https_port }}
raw http_port {{ http_port }}
{{ '\n' }}
# Set apache configuration for slave
[{{ ('slave-instance-%s-configuration' % slave_reference) }}]
{% for key, value in slave_instance.iteritems() -%}
{{ key }} = {{ dumps(value) }}
{% endfor %}
{% endfor -%}
{% do part_list.append('cached-rewrite-rules') -%}
[cached-rewrite-rules]
< = jinja2-template-base
template = {{ template_rewrite_cached }}
rendered = {{ rewrite_cached_configuration }}
extra-context =
import json_module json
key server_dict rewrite-rules:rules
[rewrite-rules]
rules = {{ dumps(cached_server_dict) }}
[buildout]
parts +=
{% for part in part_list -%}
{{ ' %s' % part }}
{% endfor -%}
eggs-directory = {{ eggs_directory }}
develop-eggs-directory = {{ develop_eggs_directory }}
offline = true
cache-access = {{ cache_access }}
\ No newline at end of file
...@@ -99,6 +99,11 @@ recipe = slapos.recipe.build:download ...@@ -99,6 +99,11 @@ recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/apache_cached_rewrite.txt.in url = ${:_profile_base_location_}/apache_cached_rewrite.txt.in
mode = 640 mode = 640
[template-custom-slave-list]
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/apache-yakari.cfg.in
mode = 640
[template-empty] [template-empty]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/empty.in url = ${:_profile_base_location_}/empty.in
......
...@@ -11,9 +11,10 @@ parts = ...@@ -11,9 +11,10 @@ parts =
logrotate-entry-apache logrotate-entry-apache
apache-frontend apache-frontend
apache-cached apache-cached
switch-softwaretype
frontend-apache-graceful frontend-apache-graceful
cached-apache-graceful cached-apache-graceful
switch-softwaretype squid-reload
promise-apache-frontend-v4-https promise-apache-frontend-v4-https
promise-apache-frontend-v4-http promise-apache-frontend-v4-http
promise-apache-frontend-v6-https promise-apache-frontend-v6-https
...@@ -32,6 +33,7 @@ bin = $${buildout:directory}/bin/ ...@@ -32,6 +33,7 @@ bin = $${buildout:directory}/bin/
etc = $${buildout:directory}/etc/ etc = $${buildout:directory}/etc/
srv = $${buildout:directory}/srv/ srv = $${buildout:directory}/srv/
var = $${buildout:directory}/var/ var = $${buildout:directory}/var/
template = $${buildout:directory}/template/
backup = $${:srv}/backup backup = $${:srv}/backup
log = $${:var}/log log = $${:var}/log
...@@ -51,7 +53,7 @@ squid-cache = $${:srv}/squid_cache ...@@ -51,7 +53,7 @@ squid-cache = $${:srv}/squid_cache
[switch-softwaretype] [switch-softwaretype]
recipe = slapos.cookbook:softwaretype recipe = slapos.cookbook:softwaretype
default = $${dynamic-template-slave-list:rendered} default = $${dynamic-custom-template-slave-list:rendered}
[instance-parameter] [instance-parameter]
# Fetches parameters defined in SlapOS Master for this instance. # Fetches parameters defined in SlapOS Master for this instance.
...@@ -71,6 +73,8 @@ configuration.public-ipv4 = '' ...@@ -71,6 +73,8 @@ configuration.public-ipv4 = ''
configuration.port = 4443 configuration.port = 4443
configuration.plain_http_port = 8080 configuration.plain_http_port = 8080
configuration.server-admin = admin@example.com configuration.server-admin = admin@example.com
configuration.apache_custom_https = ""
configuration.apache_custom_http = ""
[jinja2-template-base] [jinja2-template-base]
recipe = slapos.recipe.template:jinja2 recipe = slapos.recipe.template:jinja2
...@@ -100,6 +104,36 @@ extra-context = ...@@ -100,6 +104,36 @@ extra-context =
raw template_slave_configuration ${template-slave-configuration:target} raw template_slave_configuration ${template-slave-configuration:target}
raw template_rewrite_cached ${template-rewrite-cached:target} raw template_rewrite_cached ${template-rewrite-cached:target}
[dynamic-custom-template-slave-list]
< = jinja2-template-base
template = ${template-custom-slave-list:target}
filename = instance-slave-list.cfg
extensions = jinja2.ext.do
extra-context =
key apache_configuration_directory apache-directory:slave-configuration
key domain instance-parameter:configuration.domain
key http_port instance-parameter:configuration.plain_http_port
key https_port instance-parameter:configuration.port
key slave_instance_list instance-parameter:slave-instance-list
key rewrite_cached_configuration apache-configuration:cached-rewrite-file
key custom_ssl_directory apache-directory:vh-ssl
key template_slave_configuration dynamic-virtualhost-template-slave:rendered
raw empty_template ${template-empty:target}
raw cache_access http://$${instance-parameter:ipv4-random}:$${apache-configuration:cache-port}
raw template_rewrite_cached ${template-rewrite-cached:target}
[dynamic-virtualhost-template-slave]
<= jinja2-template-base
template = ${template-slave-configuration:target}
rendered = $${directory:template}/slave-virtualhost.conf.in
extensions = jinja2.ext.do
extra-context =
key https_port instance-parameter:configuration.port
key http_port instance-parameter:configuration.plain_http_port
key apache_custom_https instance-parameter:configuration.apache_custom_https
key apache_custom_http instance-parameter:configuration.apache_custom_http
# Deploy Apache Frontend (new way, no recipe, jinja power) # Deploy Apache Frontend (new way, no recipe, jinja power)
[dynamic-apache-frontend-template] [dynamic-apache-frontend-template]
< = jinja2-template-base < = jinja2-template-base
...@@ -302,12 +336,12 @@ wrapper-path = $${directory:service}/squid-reload ...@@ -302,12 +336,12 @@ wrapper-path = $${directory:service}/squid-reload
[frontend-apache-graceful] [frontend-apache-graceful]
recipe = slapos.cookbook:wrapper recipe = slapos.cookbook:wrapper
command-line = ${buildout:bin-directory}/killpidfromfile $${apache-configuration:pid-file} SIGUSR1 command-line = ${buildout:bin-directory}/killpidfromfile $${apache-configuration:pid-file} SIGUSR1
wrapper-path = $${directory:run}/frontend-apache-graceful wrapper-path = $${directory:service}/frontend-apache-graceful
[cached-apache-graceful] [cached-apache-graceful]
recipe = slapos.cookbook:wrapper recipe = slapos.cookbook:wrapper
command-line = ${buildout:bin-directory}/killpidfromfile $${apache-configuration:cache-pid-file} SIGUSR1 command-line = ${buildout:bin-directory}/killpidfromfile $${apache-configuration:cache-pid-file} SIGUSR1
wrapper-path = $${directory:run}/cached-apache-graceful wrapper-path = $${directory:service}/cached-apache-graceful
[promise-apache-frontend-v4-https] [promise-apache-frontend-v4-https]
recipe = slapos.cookbook:check_port_listening recipe = slapos.cookbook:check_port_listening
......
<VirtualHost *:{{ https_port }}> <VirtualHost *:{{ https_port }}>
{{ slave_parameter.get('apache_custom_https','') }} {{ apache_custom_https }}
</VirtualHost> </VirtualHost>
<VirtualHost *:{{ http_port }}> <VirtualHost *:{{ http_port }}>
{{ slave_parameter.get('apache_custom_http','') }} {{ apache_custom_http }}
</VirtualHost> </VirtualHost>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment