# vim: set ft=cfg: # Default parameters # NOTE: in case of resilient instance, auto-deploy-instance # set to false (else it could be dangerous) {% do slapparameter_dict.__setitem__('auto-deploy', slapparameter_dict.get('auto-deploy', 'true')) %} {% do slapparameter_dict.__setitem__('auto-deploy-instance', slapparameter_dict.get('auto-deploy-instance', 'false')) %} # let decide the number of clones we want. We can't have more than 2 clones {% set number_of_instances = slapparameter_dict.get('resilient-clone-number', 1)|int %} {% if number_of_instances > 2 %} {% set number_of_instances = 2 %} {% endif %} {% set monitor_return = ['monitor-base-url', 'monitor-url', 'monitor-user', 'monitor-password'] -%} {% set monitor_parameter = {'monitor-cors-domains': slapparameter_dict.pop('monitor-cors-domains', "")} -%} {% set monitor_dict = {'parameter': monitor_parameter, 'return': monitor_return, 'set-monitor-url': True} -%} {% set monitor_interface_url = slapparameter_dict.pop('monitor-interface-url', '') -%} {% import 'parts' as parts %} {% import 'replicated' as replicated %} [buildout] eggs-directory = {{ eggs_directory }} develop-eggs-directory = {{ develop_eggs_directory }} offline = true # += because we need to take up parts (like instance-custom, slapmonitor etc) from the profile we extended parts += {{ parts.replicate("runner", number_of_instances + 1) }} publish-connection-information [monitor-htpasswd] recipe = slapos.cookbook:generate.password storage-path = ${directory:etc}/.monitor_user bytes = 8 username = admin {% do monitor_parameter.__setitem__('monitor-username', slapparameter_dict.get('monitor-username', 'admin'))%} {% do monitor_parameter.__setitem__('monitor-password', slapparameter_dict.get('monitor-password', '${monitor-htpasswd:passwd}'))%} {{ replicated.replicate("runner", number_of_instances + 1, "runner-export", "runner-import", slapparameter_dict=slapparameter_dict, monitor_parameter_dict=monitor_dict) }} [directory] recipe = slapos.cookbook:mkdirectory etc = ${buildout:directory}/etc # XXX Monitoring Main Instane [monitor-instance-parameter] monitor-httpd-port = 8160 cors-domains = {{ monitor_parameter.get('monitor-cors-domains', '') }} # Bubble up the parameters [request-runner] return = url ssh-public-key ssh-url notification-id ip backend_url url ssh_command access_url 1_info 2_info webdav_url public_url git_public_url git_private_url {{ monitor_return | join(' ') }} [publish-connection-information] recipe = slapos.cookbook:publish 1_info = ${request-runner:connection-1_info} 2_info = ${request-runner:connection-2_info} backend_url = ${request-runner:connection-backend_url} access_url = ${request-runner:connection-access_url} url = ${request-runner:connection-url} ssh_command = ${request-runner:connection-ssh_command} webdav_url = ${request-runner:connection-webdav_url} public_url = ${request-runner:connection-public_url} git_public_url = ${request-runner:connection-git_public_url} git_private_url = ${request-runner:connection-git_private_url} {% for key in monitor_return -%} {{ key }} = ${request-runner:connection-{{ key }}} {% endfor -%} {% if monitor_interface_url -%} monitor_setup_url = {{ monitor_interface_url }}/#page=settings_configurator&url=${request-runner:connection-monitor-url} {% endif -%} [slap-parameter] # Default parameters for distributed deployment # I.e state "backup1 of maria should go there, ..." # XXX-Cedric: Hardcoded number of backups. Should be dynamically generated. {% for nb in range(1,number_of_instances+1) %} runner{{nb}}-computer-guid = pbs-runner{{nb}}-computer-guid = {% endfor %} # XXX-Cedric: Hardcoded parameters. Should be dynamically generated. domain = authorized-key = instance-amount = 10 debug = false resilient-clone-number = 1