Commit 3c5507a7 authored by Romain Courteaud's avatar Romain Courteaud

WIP.

Balancer has to be done, as well as frontend.
parent 7d83b5c0
[buildout] [buildout]
# Local development # Local development
develop = develop =
${:parts-directory}/slapos.cookbook-repository # ${:parts-directory}/slapos.cookbook-repository
/opt/slapdev
${:parts-directory}/cloudooo-repository ${:parts-directory}/cloudooo-repository
extensions = extensions =
...@@ -67,6 +68,9 @@ extends = ...@@ -67,6 +68,9 @@ extends =
../../component/wget/buildout.cfg ../../component/wget/buildout.cfg
../../component/aspell/buildout.cfg ../../component/aspell/buildout.cfg
../../component/cloudooo/buildout.cfg ../../component/cloudooo/buildout.cfg
../../component/6tunnel/buildout.cfg
versions = versions
parts = parts =
rdiff-backup rdiff-backup
...@@ -142,6 +146,11 @@ parts = ...@@ -142,6 +146,11 @@ parts =
# Create instance template # Create instance template
template template
# XXX: Workaround of SlapOS limitation
# Unzippig of eggs is required, as SlapOS do not yet provide nicely working
# development / fast switching environment for whole software
unzip = true
# Local development # Local development
[slapos.cookbook-repository] [slapos.cookbook-repository]
recipe = plone.recipe.command recipe = plone.recipe.command
...@@ -156,7 +165,7 @@ update-command = cd "${:location}" && "${git:location}/bin/git" fetch --quiet && ...@@ -156,7 +165,7 @@ update-command = cd "${:location}" && "${git:location}/bin/git" fetch --quiet &&
recipe = plone.recipe.command recipe = plone.recipe.command
stop-on-error = true stop-on-error = true
update-command = ${:command} update-command = ${:command}
command = grep parts ${buildout:develop-eggs-directory}/slapos.cookbook.egg-link command = grep slapdev ${buildout:develop-eggs-directory}/slapos.cookbook.egg-link
[slapos.cookbook-python2.6] [slapos.cookbook-python2.6]
recipe = zc.recipe.egg recipe = zc.recipe.egg
...@@ -187,7 +196,7 @@ context = ...@@ -187,7 +196,7 @@ context =
[template-mariadb] [template-mariadb]
< = template-jinja2-base < = template-jinja2-base
filename = instance-mariadb.cfg filename = instance-mariadb.cfg
md5sum = ff64d128a076f9a55faa660b2e86e3b4 md5sum = 788d8232e0ec1c2913972df67de50711
extra-context = extra-context =
key coreutils_location coreutils:location key coreutils_location coreutils:location
key dcron_location dcron:location key dcron_location dcron:location
...@@ -207,6 +216,8 @@ filename = instance-sphinx.cfg ...@@ -207,6 +216,8 @@ filename = instance-sphinx.cfg
md5sum = c9d510c55a8f3562fe6346907002d4df md5sum = c9d510c55a8f3562fe6346907002d4df
extra-context = extra-context =
key sphinx_location sphinx:location key sphinx_location sphinx:location
key haproxy_location haproxy:location
key dash_location dash:location
[template-zope] [template-zope]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
...@@ -225,22 +236,16 @@ extra-context = ...@@ -225,22 +236,16 @@ extra-context =
key kumo_location kumo:location key kumo_location kumo:location
key logrotate_location logrotate:location key logrotate_location logrotate:location
[template-tidstorage]
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-tidstorage.cfg.in
md5sum = 520e39f2612a045b42c0ad914bfdc5a9
mode = 640
[template-cloudooo] [template-cloudooo]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-cloudoo.cfg.in url = ${:_profile_base_location_}/instance-cloudoo.cfg.in
md5sum = 5b56a84b779f72c279adb4ed3b12e512 md5sum = c6af2d026daff3dd9055ecd8785a346d
mode = 640 mode = 640
[template-zope-conf] [template-zope-conf]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/zope.conf.in url = ${:_profile_base_location_}/zope.conf.in
md5sum = ec4203f1f54b05505d8f35cb5799a75c md5sum = 4fbcaf745a1959cd18da3c7004960fc3
mode = 640 mode = 640
[template] [template]
...@@ -248,7 +253,7 @@ mode = 640 ...@@ -248,7 +253,7 @@ mode = 640
# XXX: "template.cfg" is hardcoded in instanciation recipe # XXX: "template.cfg" is hardcoded in instanciation recipe
filename = template.cfg filename = template.cfg
template = ${:_profile_base_location_}/instance.cfg.in template = ${:_profile_base_location_}/instance.cfg.in
md5sum = e55c79ce2e52a9895980b3800e8a12fe md5sum = 292b0b4a44183ab1028cde2427ba7e85
extra-context = extra-context =
key apache_location apache:location key apache_location apache:location
key aspell_location aspell:location key aspell_location aspell:location
...@@ -268,6 +273,7 @@ extra-context = ...@@ -268,6 +273,7 @@ extra-context =
key grep_location grep:location key grep_location grep:location
key gzip_location gzip:location key gzip_location gzip:location
key haproxy_location haproxy:location key haproxy_location haproxy:location
key tunnel6_location 6tunnel:location
key imagemagick_location imagemagick:location key imagemagick_location imagemagick:location
key libICE_location libICE:location key libICE_location libICE:location
key libSM_location libSM:location key libSM_location libSM:location
...@@ -284,18 +290,22 @@ extra-context = ...@@ -284,18 +290,22 @@ extra-context =
key logrotate_location logrotate:location key logrotate_location logrotate:location
key mariadb_location mariadb:location key mariadb_location mariadb:location
key openssl_location openssl:location key openssl_location openssl:location
key stunnel_location stunnel:location
key pdftk_location pdftk:location key pdftk_location pdftk:location
key poppler_location poppler:location key poppler_location poppler:location
key sed_location sed:location key sed_location sed:location
key template_balancer template-balancer:target
key template_cloudooo template-cloudooo:target key template_cloudooo template-cloudooo:target
key template_erp5_development template-erp5-development:target key template_erp5_development template-erp5-development:target
key template_erp5_production template-erp5-production:rendered key template_erp5_production template-erp5-production:target
key template_kumofs template-kumofs:rendered key template_kumofs template-kumofs:rendered
key template_logrotate_base template-logrotate-base:rendered
key template_mariadb template-mariadb:rendered key template_mariadb template-mariadb:rendered
key template_memcached template-memcached:rendered key template_memcached template-memcached:rendered
key template_production_zope template-production-zope:target
key template_sphinx template-sphinx:rendered key template_sphinx template-sphinx:rendered
key template_tidstorage template-tidstorage:target
key template_varnish template-varnish:target key template_varnish template-varnish:target
key template_zeo template-zeo:target
key template_zope template-zope:target key template_zope template-zope:target
key template_zope_conf template-zope-conf:target key template_zope_conf template-zope-conf:target
key tesseract_location tesseract:location key tesseract_location tesseract:location
...@@ -307,10 +317,10 @@ extra-context = ...@@ -307,10 +317,10 @@ extra-context =
[template-memcached] [template-memcached]
< = template-jinja2-base < = template-jinja2-base
filename = instance-memcached.cfg filename = instance-memcached.cfg
md5sum = 594d3195b258906d4a3fde09c01c917c md5sum = 872da22de0d07e1ca05282d10dbf488b
extra-context = extra-context =
key dash_location dash:location key dash_location dash:location
key haproxy_location haproxy:location key tunnel6_location 6tunnel:location
key memcached_location memcached:location key memcached_location memcached:location
[template-erp5-development] [template-erp5-development]
...@@ -320,11 +330,39 @@ md5sum = 2a4312202a3160f874c4fa3ee9155a1d ...@@ -320,11 +330,39 @@ md5sum = 2a4312202a3160f874c4fa3ee9155a1d
mode = 640 mode = 640
[template-erp5-production] [template-erp5-production]
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-erp5-production.cfg.in
md5sum = c2f4bc478dd072e0bba85e8898dc7c8f
mode = 640
[template-zeo]
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-zeo.cfg.in
md5sum = 57ddeb22de33bc181b0334e2fed72eaa
mode = 640
extra-context =
key dash_location dash:location
[template-production-zope]
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-production-zope.cfg.in
md5sum = eab812d8d331fc710c3625d8860a99a7
mode = 640
[template-balancer]
recipe = slapos.recipe.build:download
url = ${:_profile_base_location_}/instance-balancer.cfg.in
md5sum = 6c8fd033568be93057cce5e15ab8f3d9
mode = 640
[template-logrotate-base]
< = template-jinja2-base < = template-jinja2-base
filename = instance-erp5-production.cfg filename = instance-logrotate-base.cfg
md5sum = 3051f3fea39d7409c417dcac26027b56 md5sum = af19ff0c7817df85987c69738fb083f2
extra-context = extra-context =
key local_bt5_repository local-bt5-repository:list key dcron_location dcron:location
key gzip_location gzip:location
key logrotate_location logrotate:location
[template-varnish] [template-varnish]
recipe = slapos.recipe.build:download recipe = slapos.recipe.build:download
...@@ -609,7 +647,7 @@ Products.GenericSetup = 1.7.1 ...@@ -609,7 +647,7 @@ Products.GenericSetup = 1.7.1
Products.MimetypesRegistry = 2.0.3 Products.MimetypesRegistry = 2.0.3
Products.PluggableAuthService = 1.7.7 Products.PluggableAuthService = 1.7.7
Products.PluginRegistry = 1.3b1 Products.PluginRegistry = 1.3b1
Products.TIDStorage = 5.4.7.dev-r45842 Products.TIDStorage = 5.4.8
Products.Zelenium = 1.0.3 Products.Zelenium = 1.0.3
StructuredText = 2.11.1 StructuredText = 2.11.1
WSGIUtils = 0.7 WSGIUtils = 0.7
......
{% if software_type == slap_software_type -%} {% if software_type == slap_software_type -%}
{% set part_list = [] -%}
{% macro section(name) %}{% do part_list.append(name) %}{{ name }}{% endmacro -%}
{# {#
XXX: This template only supports exactly one IPv4 and one IPv6 per XXX: This template only supports exactly one IPv4 and one IPv6 per
partition. No more (undefined result), no less (IndexError). partition. No more (undefined result), no less (IndexError).
...@@ -8,18 +10,35 @@ partition. No more (undefined result), no less (IndexError). ...@@ -8,18 +10,35 @@ partition. No more (undefined result), no less (IndexError).
# directly to haproxy. (maybe just passing literal configuration file chunk) # directly to haproxy. (maybe just passing literal configuration file chunk)
{% set ipv4 = (ipv4_set | list)[0] -%} {% set ipv4 = (ipv4_set | list)[0] -%}
{% set ipv6 = (ipv6_set | list)[0] -%} {% set ipv6 = (ipv6_set | list)[0] -%}
[buildout]
extends = {{ parameter_dict['instance-logrotate-cfg'] }}
parts +=
publish
logrotate-apache
eggs-directory = {{ eggs_directory }}
develop-eggs-directory = {{ develop_eggs_directory }}
offline = true
[publish] [zope-tunnel-base]
recipe = slapos.cookbook:publish recipe = slapos.cookbook:ipv4toipv6
url = ${apache:scheme}://[${apache:ip}]:${apache:port} runner-path = ${directory:services}/${:base-name}
tunnel6-path = {{ parameter_dict['tunnel6'] }}/bin/6tunnel
shell-path = {{ parameter_dict['dash'] }}/bin/dash
ipv4 = {{ ipv4 }}
{% set zope_address_list = [] -%}
{% set current_port = 9000 -%}
{% set next_current_port = {'next_port': current_port} -%}
{% for zope_name in json_module.loads(slapparameter_dict['zope-name-list']) -%}
{% for zope_address in json_module.loads(slapparameter_dict['zope-' ~ zope_name ~ '-address-list']) -%}
[{{ section('zope-tunnel-' ~ current_port) }}]
< = zope-tunnel-base
base-name = {{ 'zeo-tunnel-' ~ current_port }}
ipv4-port = {{ current_port }}
ipv6-port = {{ zope_address.split(']:')[1] }}
ipv6 = {{ zope_address.split(']:')[0][1:] }}
{% do zope_address_list.append(ipv4 ~ ":" ~ current_port) -%}
{% set current_port = current_port + 1 -%}
{% do next_current_port.__setitem__('next_port', current_port) -%}
{% endfor -%}
{% set current_port = next_current_port['next_port'] -%}
{% endfor -%}
{% set current_port = next_current_port['next_port'] -%}
[haproxy] [haproxy]
recipe = slapos.cookbook:haproxy recipe = slapos.cookbook:haproxy
...@@ -32,7 +51,7 @@ maxconn = {{ slapparameter_dict['haproxy-maxconn'] }} ...@@ -32,7 +51,7 @@ maxconn = {{ slapparameter_dict['haproxy-maxconn'] }}
server-check-path = {{ slapparameter_dict['haproxy-server-check-path'] }} server-check-path = {{ slapparameter_dict['haproxy-server-check-path'] }}
wrapper-path = ${directory:services}/haproxy wrapper-path = ${directory:services}/haproxy
binary-path = {{ parameter_dict['haproxy'] }}/sbin/haproxy binary-path = {{ parameter_dict['haproxy'] }}/sbin/haproxy
backend-list = {{ slapparameter_dict['zope-address-list'] }} backend-list = {{ json_module.dumps(zope_address_list) }}
[apache] [apache]
recipe = slapos.cookbook:apache.zope.backend recipe = slapos.cookbook:apache.zope.backend
...@@ -67,13 +86,21 @@ ca-private = ${directory:private} ...@@ -67,13 +86,21 @@ ca-private = ${directory:private}
ca-certs = ${directory:certs} ca-certs = ${directory:certs}
ca-newcerts = ${directory:newcerts} ca-newcerts = ${directory:newcerts}
ca-crl = ${directory:crl} ca-crl = ${directory:crl}
{% set ca = slapparameter_dict['ca'] -%} {% set ca = json_module.loads(slapparameter_dict['ca']) -%}
country-code = {{ ca['country-code'] }} country-code = {{ ca['country-code'] }}
email = {{ ca['email'] }} email = {{ ca['email'] }}
state = {{ ca['state'] }} state = {{ ca['state'] }}
city = {{ ca['city'] }} city = {{ ca['city'] }}
company = {{ ca['company'] }} company = {{ ca['company'] }}
[ca-apache]
< = certificate-authority
recipe = slapos.cookbook:certificate_authority.request
key-file = ${apache:key-file}
cert-file = ${apache:cert-file}
executable = ${apache:wrapper}
wrapper = ${directory:services}/apache
[logrotate-apache] [logrotate-apache]
recipe = slapos.cookbook:logrotate.d recipe = slapos.cookbook:logrotate.d
logrotate-entries = ${logrotate:logrotate-entries} logrotate-entries = ${logrotate:logrotate-entries}
...@@ -97,4 +124,23 @@ private = ${:ca-dir}/private ...@@ -97,4 +124,23 @@ private = ${:ca-dir}/private
certs = ${:ca-dir}/certs certs = ${:ca-dir}/certs
newcerts = ${:ca-dir}/newcerts newcerts = ${:ca-dir}/newcerts
crl = ${:ca-dir}/crl crl = ${:ca-dir}/crl
[publish]
recipe = slapos.cookbook:publish
url = ${apache:scheme}://[${apache:ip}]:${apache:port}
[buildout]
extends = {{ parameter_dict['instance-logrotate-cfg'] }}
parts =
haproxy
{{ part_list | join('\n ') }}
publish
ca-apache
# cron-entry-logrotate
# logrotate
# logrotate-apache
eggs-directory = {{ eggs_directory }}
develop-eggs-directory = {{ develop_eggs_directory }}
offline = true
{% endif %} {% endif %}
{% if slap_software_type == software_type -%} {% if slap_software_type == software_type -%}
{% set part_list = [] -%} {% set part_list = [] -%}
{% macro section(name) %}{% do part_list.append(name) %}{{ name }}{% endmacro -%}
############################# #############################
# #
# Request erp5 production environnment # Request erp5 production environnment
...@@ -26,6 +27,9 @@ return = url-sphinx url-sphinx-sql ...@@ -26,6 +27,9 @@ return = url-sphinx url-sphinx-sql
[request-mariadb] [request-mariadb]
<=request-common <=request-common
name = MariaDB DataBase name = MariaDB DataBase
config =
test-database-amount
config-test-database-amount = ${slap-parameter:test-database-amount}
software-type = mariadb software-type = mariadb
sla-computer_guid = ${slap-parameter:mariadb-computer-guid} sla-computer_guid = ${slap-parameter:mariadb-computer-guid}
...@@ -49,66 +53,11 @@ name = KumoFS ...@@ -49,66 +53,11 @@ name = KumoFS
software-type = kumofs software-type = kumofs
sla-computer_guid = ${slap-parameter:kumofs-computer-guid} sla-computer_guid = ${slap-parameter:kumofs-computer-guid}
[request-zope-base]
<=request-common
return =
zope-address-list
config =
mysql-url
memcached-url
cloudooo-url
kumofs-url
sphinx-url-sphinx
sphinx-url-sphinx-sql
smtp-url
bt5
bt5-repository-url
zodb-dict
tidstorage-ip
tidstorage-port
zope-instance-number
config-mysql-url = ${request-mariadb:connection-url}
config-memcached-url = ${request-memcached:connection-url}
config-cloudooo-url = ${request-cloudooo:connection-url}
config-kumofs-url = ${request-kumofs:connection-url}
config-sphinx-url-sphinx = ${request-sphinx:connection-url-sphinx}
config-sphinx-url-sphinx-sql = ${request-sphinx:connection-url-sphinx-sql}
config-bt5 = ${slap-parameter:bt5}
config-bt5-repository-url = ${slap-parameter:bt5-repository-url}
config-smtp-url = ${slap-parameter:smtp-url}
config-zodb-dict = ${request-zodb:connection-zodb-dict}
config-tidstorage-ip = ${request-zodb:connection-tidstorage-ip}
config-tidstorage-port = ${request-zodb:connection-tidstorage-port}
software-type = production-zope
[slap-parameter]
# Default value if no computer_guid is specified for each type
sphinx-computer-guid = ${slap-connection:computer-id}
mariadb-computer-guid = ${slap-connection:computer-id}
cloudooo-computer-guid = ${slap-connection:computer-id}
memcached-computer-guid = ${slap-connection:computer-id}
kumofs-computer-guid = ${slap-connection:computer-id}
zodb-computer-guid = ${slap-connection:computer-id}
cloudooo-json =
bt5 = erp5_full_text_myisam_catalog
erp5_configurator_standard
erp5_configurator_maxma_demo
erp5_configurator_ung
erp5_configurator_run_my_doc
bt5-repository-url = {{ local_bt5_repository }}
smtp-url = smtp://localhost:25/
[basedirectory]
recipe = slapos.cookbook:mkdirectory
etc = ${buildout:directory}/etc/run
[request-zodb] [request-zodb]
< = request-common < = request-common
name = zodb
return = return =
zodb-storage-type zodb-list
# (str)
# Storage type, suitable for zope.conf (ex: "zeoclient").
zodb-dict
# (dict) # (dict)
# key (str) # key (str)
# (same as config-zodb-dict) # (same as config-zodb-dict)
...@@ -137,112 +86,129 @@ config = ...@@ -137,112 +86,129 @@ config =
# "storage_dict" (dict, optional) # "storage_dict" (dict, optional)
# Storage-type-specific parameters. For example, it can be used to tell where # Storage-type-specific parameters. For example, it can be used to tell where
# a ZEO filestorage database is located. # a ZEO filestorage database is located.
tidstorage-dict
# (dict, optional)
# Backup parameters for tidstorage-related backup scripts.
# Set to None if no backup is desired.
# key (str)
# Possible keys and associated value types:
# "zodb_dict" (dict, mandatory)
# key (str)
# (same as zodb-dict)
# value (dict)
# key (str)
# Possible keys and associated value types:
# "url_substitute" (str, mandatory)
# Value to substitute to "%s" in tidstorage-base-url-template to
# trigger a no-op change in storage.
# "path" (str, optional)
# Path to store backups of this zodb into.
# "timestamp_path" (str, optional)
# Path to backup timestamp file.
tidstorage-base-url-template
# (str, None)
# URL template base used by TIDStorage to modify all mountpoints upon startup.
# ex: 'http://example.com:1080/%s/serialize'
# Note that it needs to contain exactly one "%s" conversion specification,
# which gets substituted with ZODB mountpoint by TIDStorage server.
# Ignored when tidstorage-dict is None.
{# TODO: make libslap able to generate nested, complex values without having to resort to SR-level parsing -#} {# TODO: make libslap able to generate nested, complex values without having to resort to SR-level parsing -#}
config-zodb-dict = {{ json_module.loads(slapparameter_dict['zodb-dict']) }} config-zodb-dict = {{ slapparameter_dict['zodb-dict'] }}
config-tidstorage-dict = {{ slapparameter_dict.get('tidstorage-dict') }}
# TODO: auto-generate from one zope (distributing node)
config-tidstorage-base-url-template = {{ slapparameter_dict.get('tidstorage-base-url-template') }}
software-type = {{ slapparameter_dict['zodb-software-type'] }} software-type = {{ slapparameter_dict['zodb-software-type'] }}
sla-computer_guid = ${slap-parameter:zodb-computer-guid} sla-computer_guid = ${slap-parameter:zodb-computer-guid}
{% set i = 0 -%} [request-zope-base]
<=request-common
return =
zope-address-list
config =
mysql-url
memcached-url
cloudooo-url
kumofs-url
sphinx-url-sphinx
sphinx-url-sphinx-sql
smtp-url
bt5
bt5-repository-url
zodb-list
tidstorage-ip
tidstorage-port
instance-count
thread-amount
timerserver-interval
timezone
site-id
config-mysql-url = ${request-mariadb:connection-url}
config-memcached-url = ${request-memcached:connection-url}
config-cloudooo-url = ${request-cloudooo:connection-url}
config-kumofs-url = ${request-kumofs:connection-url}
config-sphinx-url-sphinx = ${request-sphinx:connection-url-sphinx}
config-sphinx-url-sphinx-sql = ${request-sphinx:connection-url-sphinx-sql}
config-bt5 = ${slap-parameter:bt5}
config-bt5-repository-url = ${slap-parameter:bt5-repository-url}
config-smtp-url = ${slap-parameter:smtp-url}
config-zodb-list = ${request-zodb:connection-zodb-list}
# config-zodb-dict = ${request-zodb:connection-zodb-dict}
# config-zodb-storage-type = ${request-zodb:connection-zodb-storage-type}
config-tidstorage-ip = ${request-zodb:connection-tidstorage-ip}
config-tidstorage-port = ${request-zodb:connection-tidstorage-port}
config-timezone = ${slap-parameter:timezone}
config-site-id = ${slap-parameter:site-id}
software-type = production-zope
{% set zope_family_dict = {} -%} {% set zope_family_dict = {} -%}
{% for instance_count, zope_parameter_dict in json_module.loads(slapparameter_dict.get('zope-partition-list', '[[1, {}]]')) -%} {% for custom_name, zope_parameter_dict in json_module.loads(slapparameter_dict.get('zope-partition-dict', '{}')).items() -%}
{% set name = 'zope-' ~ i -%} {% set name = 'zope-' ~ custom_name -%}
{% set i = i + 1 -%} {% do zope_family_dict.setdefault(zope_parameter_dict.get('family'), []).append('request-' ~ name) -%}
{% do zope_family_dict.setdefault(zope_parameter_dict.get('family'), []).append(name) -%} [{{ 'request-' ~ name }}]
[{{ name }}]
< = request-zope-base < = request-zope-base
name = {{ name }} name = {{ name }}
config-zope-instance-count = {{ instance_count }} config-instance-count = {{ zope_parameter_dict.get('instance-count', 1) }}
config-thread-amount = {{ zope_parameter_dict.get('thread-amount', 1) }}
config-timerserver-interval = {{ zope_parameter_dict.get('timerserver-interval', 0) }}
sla-computer_guid = {{ zope_parameter_dict.get('computer_guid', '${slap-connection:computer-id}') }} sla-computer_guid = {{ zope_parameter_dict.get('computer_guid', '${slap-connection:computer-id}') }}
{% endfor %} {% endfor %}
[request-backend-base] [request-backend-base]
< = request-common < = request-common
software-type = balancer
return = url return = url
config =
zope-address-list
haproxy-maxconn
haproxy-server-check-path
apache-access-control-string
apache-ssl-authentication
apache-backend-path
ca
# XXX: should those really be same for all backends ? # XXX: should those really be same for all backends ?
config-haproxy-maxconn = {{ slapparameter_dict.get('haproxy-maxconn', 1) }} config-haproxy-maxconn = {{ slapparameter_dict.get('haproxy-maxconn', 1) }}
config-haproxy-server-check-path = {{ slapparameter_dict.get('haproxy-server-check-path', '/') }} config-haproxy-server-check-path = {{ slapparameter_dict.get('haproxy-server-check-path', '/') }}
config-apache-access-control-string = {{ slapparameter_dict.get('apache-access-control-string', '') }} config-apache-access-control-string = {{ slapparameter_dict.get('apache-access-control-string', '') }}
config-apache-ssl-authentication = {{ slapparameter_dict.get('apache-ssl-authentication', '0') }} config-apache-ssl-authentication = {{ slapparameter_dict.get('apache-ssl-authentication', '0') }}
config-apache-backend-path = {{ slapparameter_dict.get('apache-backend-path', '/') % {'site_id': slapparameter_dict['site_id']} }} config-apache-backend-path = {{ slapparameter_dict.get('apache-backend-path', '/') % {'site_id': slapparameter_dict['site_id']} }}
config-ca = {{ json_module.loads(slapparameter_dict['ca']) }} config-ca = {{ slapparameter_dict['ca'] }}
[request-frontend-base]
{% if 'frontend-software-url' in slapparameter_dict -%}
< = request-common
software-url = {{ slapparameter_dict['frontend-software-url'] }}
software-type = {{ slapparameter_dict.get('frontend-software-type', 'RootSoftwareInstance') }}
sla = instance_guid
sla-instance_guid = {{ slapparameter_dict['frontend-instance-guid'] }}
slave = true
{% set config_dict = {
'type': 'zope',
} -%}
{% if 'frontend-domain' in slapparameter_dict -%}
{% do config_dict.__setitem__('custom_domain', slapparameter_dict['frontend-domain']) -%}
{% endif -%}
config = url {{ config_dict.keys() | join(' ') }}
{% for name, value in config_dict.items() -%}
config-{{ name }} = {{ value }}
{% endfor -%}
return = site_url
{% endif -%}
{% set i = 0 -%} {% for family_name, zope_section_id_list in zope_family_dict.items() -%}
{% for zope_section_id_list in zope_family_dict.values() -%} {% set backend_name = 'backend-' ~ family_name -%}
{% set backend_name = 'backend-' ~ i -%} {% set frontend_name = 'frontend-' ~ family_name -%}
{% set frontend_name = 'frontend-' ~ i -%} [{{ section(backend_name) }}]
{% do part_list.append(frontend_name) -%}
{% set i = i + 1 -%}
[{{ backend_name }}]
< = request-backend-base < = request-backend-base
config =
zope-name-list
haproxy-maxconn
haproxy-server-check-path
apache-access-control-string
apache-ssl-authentication
apache-backend-path
ca
{% for zope_section_id in zope_section_id_list %}
{{ 'zope-' ~ zope_section_id ~ '-address-list' }}
{% endfor %}
name = {{ backend_name }} name = {{ backend_name }}
config-zope-address-list = sla-computer_guid = ${slap-parameter:zodb-computer-guid}
{% for zope_section_id in zope_section_id_list %}{{ ' ${' ~ zope_section_id ~ ':connection-zope-address-list}' }}{% endfor %} config-zope-name-list = {{ json_module.dumps(zope_section_id_list) }}
{% for zope_section_id in zope_section_id_list %}
config-zope-{{ zope_section_id }}-address-list = {{ '${' ~ zope_section_id ~ ':connection-zope-address-list}' }}
{% endfor %}
[{{ frontend_name }}]
< = request-frontend-base
name = {{ frontend_name }}
config-url = {{ '${' ~ backend_name ~ ':connection-url}' }}
{% endfor %} {% endfor %}
#############################
#
# Global buildout parameters
#
#############################
[slap-parameter]
# Default value if no computer_guid is specified for each type
sphinx-computer-guid = ${slap-connection:computer-id}
mariadb-computer-guid = ${slap-connection:computer-id}
cloudooo-computer-guid = ${slap-connection:computer-id}
memcached-computer-guid = ${slap-connection:computer-id}
kumofs-computer-guid = ${slap-connection:computer-id}
zodb-computer-guid = ${slap-connection:computer-id}
cloudooo-json =
bt5 = erp5_full_text_myisam_catalog
erp5_configurator_standard
erp5_configurator_maxma_demo
erp5_configurator_ung
erp5_configurator_run_my_doc
bt5-repository-url = {{ local_bt5_repository }}
smtp-url = smtp://localhost:25/
timezone = Europe/Paris
site-id = erp5
test-database-amount = 0
[buildout] [buildout]
parts = parts =
basedirectory
{{ part_list | join('\n ') }} {{ part_list | join('\n ') }}
eggs-directory = {{ eggs_directory }} eggs-directory = {{ eggs_directory }}
......
...@@ -42,7 +42,7 @@ zlib = {{ zlib_location }} ...@@ -42,7 +42,7 @@ zlib = {{ zlib_location }}
libreoffice-bin = {{ libreoffice_bin_location }} libreoffice-bin = {{ libreoffice_bin_location }}
fonts = {{ fonts_location }} fonts = {{ fonts_location }}
buildout-bin-directory = {{ buildout_bin_directory }} buildout-bin-directory = {{ buildout_bin_directory }}
haproxy = {{ haproxy_location }} tunnel6 = {{ tunnel6_location }}
dash = {{ dash_location }} dash = {{ dash_location }}
[dynamic-template-cloudooo] [dynamic-template-cloudooo]
...@@ -167,10 +167,14 @@ apache = {{ apache_location }} ...@@ -167,10 +167,14 @@ apache = {{ apache_location }}
openssl = {{ openssl_location }} openssl = {{ openssl_location }}
haproxy = {{ haproxy_location }} haproxy = {{ haproxy_location }}
instance-logrotate-cfg = {{ template_logrotate_base }} instance-logrotate-cfg = {{ template_logrotate_base }}
bin-directory = {{ bin_directory }}
tunnel6 = {{ tunnel6_location }}
dash = {{ dash_location }}
[dynamic-template-balancer] [dynamic-template-balancer]
< = jinja2-template-base < = jinja2-template-base
template = {{ template_balancer }} template = {{ template_balancer }}
extensions = jinja2.ext.do
filename = instance-balancer.cfg filename = instance-balancer.cfg
extra-context = extra-context =
key ipv4_set slap-parameters:ipv4 key ipv4_set slap-parameters:ipv4
...@@ -179,10 +183,15 @@ extra-context = ...@@ -179,10 +183,15 @@ extra-context =
# Must match the key id in [switch-softwaretype] which uses this section. # Must match the key id in [switch-softwaretype] which uses this section.
# XXX: a better name should be searched # XXX: a better name should be searched
raw software_type balancer raw software_type balancer
import json_module json
key bin_directory dynamic-template-zope-parameters:bin-directory
[dynamic-template-zeo-parameters] [dynamic-template-zeo-parameters]
buildout-bin-directory = {{ buildout_bin_directory }} buildout-bin-directory = {{ buildout_bin_directory }}
instance-logrotate-cfg = {{ template_logrotate_base }} instance-logrotate-cfg = {{ template_logrotate_base }}
tunnel6 = {{ tunnel6_location }}
dash = {{ dash_location }}
zope-conf-template = {{ template_zope_conf }}
[dynamic-template-zeo] [dynamic-template-zeo]
< = jinja2-template-base < = jinja2-template-base
...@@ -190,7 +199,9 @@ template = {{ template_zeo }} ...@@ -190,7 +199,9 @@ template = {{ template_zeo }}
filename = instance-zeo.cfg filename = instance-zeo.cfg
extensions = jinja2.ext.do extensions = jinja2.ext.do
extra-context = extra-context =
key ipv4_set slap-parameters:ipv4
key ipv6_set slap-parameters:ipv6 key ipv6_set slap-parameters:ipv6
import json_module json
section parameter_dict dynamic-template-zeo-parameters section parameter_dict dynamic-template-zeo-parameters
# key instance_stunnel # key instance_stunnel
# Must match the key id in [switch-softwaretype] which uses this section. # Must match the key id in [switch-softwaretype] which uses this section.
...@@ -198,7 +209,6 @@ extra-context = ...@@ -198,7 +209,6 @@ extra-context =
[dynamic-template-production-zope-parameters] [dynamic-template-production-zope-parameters]
zope-conf-template = {{ template_zope_conf }} zope-conf-template = {{ template_zope_conf }}
products = {{ product_list }}
instance-logrotate-cfg = {{ template_logrotate_base }} instance-logrotate-cfg = {{ template_logrotate_base }}
git = {{ git_location }} git = {{ git_location }}
graphviz = {{ graphviz_location }} graphviz = {{ graphviz_location }}
...@@ -213,6 +223,11 @@ tesseract = {{ tesseract_location }} ...@@ -213,6 +223,11 @@ tesseract = {{ tesseract_location }}
w3m = {{ w3m_location }} w3m = {{ w3m_location }}
poppler = {{ poppler_location }} poppler = {{ poppler_location }}
dmtx-utils = {{ dmtx_utils_location }} dmtx-utils = {{ dmtx_utils_location }}
openssl = {{ openssl_location }}
stunnel = {{ stunnel_location }}
tunnel6 = {{ tunnel6_location }}
haproxy = {{ haproxy_location }}
dash = {{ dash_location }}
[dynamic-template-production-zope] [dynamic-template-production-zope]
< = jinja2-template-base < = jinja2-template-base
...@@ -221,10 +236,12 @@ filename = instance-production-zope.cfg ...@@ -221,10 +236,12 @@ filename = instance-production-zope.cfg
extensions = jinja2.ext.do extensions = jinja2.ext.do
extra-context = extra-context =
key ipv6_set slap-parameters:ipv6 key ipv6_set slap-parameters:ipv6
section parameter_dict dynamic-template-production-zope key ipv4_set slap-parameters:ipv4
section parameter_dict dynamic-template-production-zope-parameters
# key instance_stunnel # key instance_stunnel
# Must match the key id in [switch-softwaretype] which uses this section. # Must match the key id in [switch-softwaretype] which uses this section.
raw software_type production-zope raw software_type production-zope
import json_module json
[switch-softwaretype] [switch-softwaretype]
recipe = slapos.cookbook:softwaretype recipe = slapos.cookbook:softwaretype
......
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