[buildout] eggs-directory = ${buildout:eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory} offline = true extends = ${monitor2-template:rendered} parts = testnode certificate-authority ca-shellinabox ca-httpd-testnode monitor-base monitor-publish testnode-frontend resiliency-exclude-file shellinabox-frontend-reload promises [monitor-publish] recipe = slapos.cookbook:publish url = $${shellinabox-frontend:url} frontend-url = $${testnode-frontend:connection-secure_access} [pwgen] recipe = slapos.cookbook:generate.password storage-path = $${buildout:directory}/.password [testnode] recipe = slapos.cookbook:erp5testnode slapos-directory = $${directory:slapos} working-directory = $${directory:testnode} test-suite-directory = $${directory:test-suite} proxy-host = $${slap-network-information:local-ipv4} proxy-port = 5000 log-directory = $${directory:log} srv-directory = $${rootdirectory:srv} software-directory = $${directory:software} run-directory = $${directory:run} test-node-title = $${slap-parameter:test-node-title} node-quantity = $${slap-parameter:node-quantity} ipv4-address = $${slap-network-information:local-ipv4} ipv6-address = $${slap-network-information:global-ipv6} test-suite-master-url = $${slap-parameter:test-suite-master-url} instance-dict = $${slap-parameter:instance-dict} software-path-list = $${slap-parameter:software-path-list} git-binary = ${git:location}/bin/git slapos-binary = ${buildout:bin-directory}/slapos testnode = ${buildout:bin-directory}/testnode zip-binary = ${zip:location}/bin/zip httpd-pid-file = $${basedirectory:run}/httpd.pid httpd-lock-file = $${basedirectory:run}/httpd.lock httpd-conf-file = $${rootdirectory:etc}/httpd.conf httpd-wrapper = $${rootdirectory:bin}/httpd httpd-port = 9080 httpd-software-access-port = 9081 httpd-ip = $${slap-network-information:global-ipv6} httpd-log-directory = $${basedirectory:log} httpd-software-directory = $${directory:software} httpd-cert-file = $${rootdirectory:etc}/httpd-public.crt httpd-key-file = $${rootdirectory:etc}/httpd-private.key configuration-file = $${rootdirectory:etc}/erp5testnode.cfg log-file = $${basedirectory:log}/erp5testnode.log wrapper = $${basedirectory:services}/erp5testnode # Binaries apache-binary = ${apache:location}/bin/httpd apache-modules-dir = ${apache:location}/modules apache-mime-file = ${apache:location}/conf/mime.types apache-htpasswd = ${apache:location}/bin/htpasswd [shell-environment] shell = ${bash:location}/bin/bash [shellinabox] recipe = slapos.recipe.template:jinja2 # We cannot use slapos.cookbook:wrapper here because this recipe escapes too much socket = $${directory:run}/siab.sock mode = 0700 rendered = $${basedirectory:services}/shellinaboxd template = inline: #!/bin/sh exec ${shellinabox:location}/bin/shellinaboxd \ --disable-ssl \ --disable-ssl-menu \ --unixdomain-only=$${:socket}:$(id -u):$(id -g):0600 \ --service "/:$(id -u):$(id -g):HOME:$${shell-environment:shell} -l" [shellinabox-frontend-config] recipe = slapos.recipe.template:jinja2 rendered = $${directory:etc}/$${:_buildout_section_name_} template = inline: https://$${:hostname}:$${:port} { bind $${:ipv6} tls $${:cert-file} $${:key-file} gzip log stdout errors stderr proxy / unix:$${shellinabox:socket} basicauth $${:username} $${:passwd} { realm "Test Node $${testnode:test-node-title}" / } } ipv6 = $${slap-network-information:global-ipv6} hostname = [$${:ipv6}] port = 8080 username = testnode passwd = $${pwgen:passwd} cert-file = $${directory:shellinabox}/public.crt key-file = $${directory:shellinabox}/private.key url = https://$${:username}:$${:passwd}@$${:hostname}:$${:port} [shellinabox-frontend] recipe = slapos.cookbook:wrapper wrapper-path = $${rootdirectory:bin}/$${:_buildout_section_name_} command-line = ${caddy:output} -conf $${shellinabox-frontend-config:rendered} -pidfile $${:pidfile} url = $${shellinabox-frontend-config:url} hostname = $${shellinabox-frontend-config:ipv6} port = $${shellinabox-frontend-config:port} pidfile = $${basedirectory:run}/$${:_buildout_section_name_}.pid [shellinabox-frontend-reload] recipe = slapos.cookbook:wrapper wrapper-path = $${basedirectory:services}/$${:_buildout_section_name_} command-line = ${bash:location}/bin/bash -c "kill -s USR1 $$(${coreutils:location}/bin/cat $${shellinabox-frontend:pidfile}) \ && ${coreutils:location}/bin/sleep infinity" hash-files = $${shellinabox-frontend-config:rendered} $${shellinabox-frontend:wrapper-path} [certificate-authority] recipe = slapos.cookbook:certificate_authority openssl-binary = ${openssl:location}/bin/openssl ca-dir = $${directory:ca-dir} requests-directory = $${cadirectory:requests} wrapper = $${basedirectory:services}/ca ca-private = $${cadirectory:private} ca-certs = $${cadirectory:certs} ca-newcerts = $${cadirectory:newcerts} ca-crl = $${cadirectory:crl} [cadirectory] recipe = slapos.cookbook:mkdirectory requests = $${directory:ca-dir}/requests/ private = $${directory:ca-dir}/private/ certs = $${directory:ca-dir}/certs/ newcerts = $${directory:ca-dir}/newcerts/ crl = $${directory:ca-dir}/crl/ [ca-shellinabox] <= certificate-authority recipe = slapos.cookbook:certificate_authority.request executable = $${shellinabox-frontend:wrapper-path} wrapper = $${basedirectory:services}/shellinabox-frontend key-file = $${shellinabox-frontend-config:key-file} cert-file = $${shellinabox-frontend-config:cert-file} [ca-httpd-testnode] <= certificate-authority recipe = slapos.cookbook:certificate_authority.request executable = $${testnode:httpd-wrapper} wrapper = $${basedirectory:services}/httpd key-file = $${testnode:httpd-key-file} cert-file = $${testnode:httpd-cert-file} [rootdirectory] recipe = slapos.cookbook:mkdirectory etc = $${buildout:directory}/etc var = $${buildout:directory}/var srv = $${buildout:directory}/srv bin = $${buildout:directory}/bin tmp = $${buildout:directory}/tmp [basedirectory] recipe = slapos.cookbook:mkdirectory log = $${rootdirectory:var}/log services = $${rootdirectory:etc}/service run = $${rootdirectory:var}/run promises = $${rootdirectory:etc}/promise [directory] recipe = slapos.cookbook:mkdirectory slapos = $${rootdirectory:srv}/slapos testnode = $${rootdirectory:srv}/testnode test-suite = $${rootdirectory:srv}/test_suite log = $${basedirectory:log}/testnode run = $${basedirectory:run}/testnode software = $${rootdirectory:srv}/software shellinabox = $${rootdirectory:srv}/shellinabox ca-dir = $${rootdirectory:srv}/ca [resiliency-exclude-file] # Generate rdiff exclude file in case of resiliency recipe = collective.recipe.template input = inline: ** output = $${directory:srv}/exporter.exclude [testnode-frontend] <= slap-connection recipe = slapos.cookbook:requestoptional name = Test Node Frontend $${testnode:test-node-title} # XXX We have hardcoded SR URL here. software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg slave = true config-url = https://[$${testnode:httpd-ip}]:$${testnode:httpd-software-access-port} config-https-only = true #software-type = custom-personal return = domain secure_access [promises] recipe = instance-promises = $${shellinabox-frontend-listen-promise:path} [check-port-listening-promise] recipe = slapos.cookbook:check_port_listening path = $${directory:promises}/$${:_buildout_section_name_} [shellinabox-frontend-listen-promise] <= check-port-listening-promise hostname= $${shellinabox-frontend:hostname} port = $${shellinabox-frontend:port} [slap-parameter] node-quantity = 1 test-suite-master-url = instance-dict = software-path-list = ["https://lab.nexedi.com/nexedi/slapos/raw/master/software/seleniumrunner/software.cfg"]