1 {% if slap_software_type in software_type -%}
2 {% set part_list = [] %}
4 # Create all needed directories
6 recipe = slapos.cookbook:mkdirectory
8 bin = $${buildout:directory}/bin/
9 etc = $${buildout:directory}/etc/
10 srv = $${buildout:directory}/srv/
11 var = $${buildout:directory}/var/
12 template = $${buildout:directory}/template/
14 backup = $${:srv}/backup
17 service = $${:etc}/service
18 etc-run = $${:etc}/run
19 promise = $${:etc}/promise
21 logrotate-backup = $${:backup}/logrotate
22 logrotate-entries = $${:etc}/logrotate.d
24 cron-entries = $${:etc}/cron.d
25 crontabs = $${:etc}/crontabs
26 cronstamps = $${:etc}/cronstamps
31 # Fetches parameters defined in SlapOS Master for this instance.
33 recipe = slapos.cookbook:slapconfiguration.serialised
34 computer = $${slap-connection:computer-id}
35 partition = $${slap-connection:partition-id}
36 url = $${slap-connection:server-url}
37 key = $${slap-connection:key-file}
38 cert = $${slap-connection:cert-file}
41 # Generic jinja section to extend
42 [jinja2-template-base]
43 recipe = slapos.recipe.template:jinja2
44 rendered = $${buildout:directory}/$${:filename}
47 import json_module json
48 key eggs_directory buildout:eggs-directory
49 key develop_eggs_directory buildout:develop-eggs-directory
50 key slap_software_type instance-parameter:slap-software-type
51 key slapparameter_dict instance-parameter:configuration
52 section directory directory
59 configuration = $${pdns-directory:configuration}/pdns.conf
60 local-ipv4 = $${instance-parameter:ipv4-random}
61 ipv6 = $${instance-parameter:ipv6-random}
63 socket-directory = $${pdns-directory:socket}
67 ip-map-zonefile = ${iso-list:location}/${iso-list:filename}
68 geo-maps = $${pdns-directory:geo-maps}
71 recipe = slapos.cookbook:mkdirectory
72 configuration = $${directory:etc}/pdns
73 geo-maps = $${:configuration}/geo-maps
74 socket = $${directory:run}/pdns-socket
76 [pdns-configuration-template]
77 < = jinja2-template-base
78 template = ${template-pdns-configuration:target}
79 rendered = $${pdns:configuration}
86 recipe = slapos.cookbook:wrapper
87 command-line = ${powerdns:location}/sbin/pdns_server --config-dir=$${pdns-directory:configuration}
88 wrapper-path = $${directory:service}/pdns
91 recipe = slapos.cookbook:wrapper
92 command-line = ${powerdns:location}/bin/pdns_control reload --config-dir=$${pdns-directory:configuration}
93 wrapper-path = $${directory:etc-run}/pdns-reload
96 [pdns-promise-listen-port]
97 recipe = slapos.cookbook:check_port_listening
98 path = $${directory:promise}/pdns-port-listening
99 hostname = $${pdns:local-ipv4}
102 #####################
103 # Power DNS Slave configuration
105 {% set slave_instance_list = json_module.loads(slapparameter_dict.get('extra_slave_instance_list', '')) %}
107 # Iter through slave list to prepare configuration
108 {% for slave in slave_instance_list %}
109 {% if 'record' in slave and 'origin' in slave and 'default' in slave %}
110 {% set slave_reference = slave.get('slave_reference') %}
111 {% set slave_section_name = 'map-configuration-%s' % slave_reference %}
112 {% do part_list.append(slave_section_name) %}
113 [{{ slave_section_name }}]
114 < = jinja2-template-base
115 template = ${template-cdn-conf:location}/${template-cdn-conf:filename}
116 rendered = $${geo:geo-maps}/{{ slave_reference }}
117 configuration = {{ json_module.dumps(slave) }}
119 key json_cdn :configuration
125 [monitor-rewrite-rule]
126 powerdns = http://$${pdns:local-ipv4}:$${pdns:webserver-port}/
130 pdns-configuration-template
133 pdns-promise-listen-port
134 publish-connection-informations
135 {% for part in part_list %}
139 ###Parts to add for monitoring
141 certificate-authority
147 deploy-status-history-cgi
149 certificate-authority
153 cgi-httpd-graceful-wrapper
155 monitor-instance-log-access
157 extends = ${monitor-template:output}
159 eggs-directory = {{ eggs_directory }}
160 develop-eggs-directory = {{ develop_eggs_directory }}