############################# # # Instanciate kvm frontend # ############################# [buildout] parts = logrotate # logrotate-entry-frontend cron cron-entry-logrotate ca-frontend certificate-authority frontend-promise publish-kvm-frontend-connection-information eggs-directory = ${buildout:eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory} offline = true [rootdirectory] recipe = slapos.cookbook:mkdirectory etc = $${buildout:directory}/etc bin = $${buildout:directory}/bin srv = $${buildout:directory}/srv var = $${buildout:directory}/var [basedirectory] recipe = slapos.cookbook:mkdirectory services = $${rootdirectory:etc}/run promises = $${rootdirectory:etc}/promise nodejs-conf = $${rootdirectory:etc}/nodejs run = $${rootdirectory:var}/run log = $${rootdirectory:var}/log ca-dir = $${rootdirectory:srv}/ssl backup = $${rootdirectory:srv}/backup [directory] recipe = slapos.cookbook:mkdirectory cron-entries = $${rootdirectory:etc}/cron.d crontabs = $${rootdirectory:etc}/crontabs cronstamps = $${rootdirectory:etc}/cronstamps ca-dir = $${rootdirectory:srv}/ssl logrotate-backup = $${basedirectory:backup}/logrotate logrotate-entries = $${rootdirectory:etc}/logrotate.d [frontend-instance] recipe = slapos.cookbook:kvm.frontend domain = $${ca-frontend:name} # port = $${slap-parameter:port} ip = $${slap-network-information:global-ipv6} port = $${slap-parameter:port} http-redirection = $${slap-parameter:http-redirection} ssl-key-path = $${ca-frontend:key-file} ssl-cert-path = $${ca-frontend:cert-file} slave-instance-list = $${slap-parameter:slave_instance_list} map-path = $${basedirectory:nodejs-conf}/proxy_table.json conf-path = $${basedirectory:nodejs-conf}/kvm-proxy.js wrapper-path = $${rootdirectory:bin}/kvm_frontend node-binary = ${nodejs:location}/bin/node node-env = ${buildout:parts-directory}:${npm-modules:location}/node_modules shell-path = ${dash:location}/bin/dash [frontend-promise] recipe = slapos.cookbook:check_port_listening path = $${basedirectory:promises}/frontend_promise hostname = $${frontend-instance:ip} port = $${frontend-instance:port} [certificate-authority] recipe = slapos.cookbook:certificate_authority openssl-binary = ${openssl:location}/bin/openssl ca-dir = $${basedirectory:ca-dir} requests-directory = $${cadirectory:requests} wrapper = $${basedirectory:services}/certificate_authority ca-private = $${cadirectory:private} ca-certs = $${cadirectory:certs} ca-newcerts = $${cadirectory:newcerts} ca-crl = $${cadirectory:crl} [cadirectory] recipe = slapos.cookbook:mkdirectory requests = $${basedirectory:ca-dir}/requests/ private = $${basedirectory:ca-dir}/private/ certs = $${basedirectory:ca-dir}/certs/ newcerts = $${basedirectory:ca-dir}/newcerts/ crl = $${basedirectory:ca-dir}/crl/ [ca-frontend] <= certificate-authority recipe = slapos.cookbook:certificate_authority.request key-file = $${basedirectory:nodejs-conf}/nodejs.key cert-file = $${basedirectory:nodejs-conf}/nodejs.crt executable = $${frontend-instance:wrapper-path} wrapper = $${basedirectory:services}/nodejs # Put domain name name = $${slap-parameter:domain} [cron] recipe = slapos.cookbook:cron dcrond-binary = ${dcron:location}/sbin/crond cron-entries = $${directory:cron-entries} crontabs = $${directory:crontabs} cronstamps = $${directory:cronstamps} catcher = $${cron-simplelogger:wrapper} binary = $${basedirectory:services}/crond [cron-simplelogger] recipe = slapos.cookbook:simplelogger wrapper = $${rootdirectory:bin}/cron_simplelogger log = $${basedirectory:log}/cron.log [cron-entry-logrotate] <= cron recipe = slapos.cookbook:cron.d name = logrotate frequency = 0 0 * * * command = $${logrotate:wrapper} [logrotate] recipe = slapos.cookbook:logrotate # Binaries logrotate-binary = ${logrotate:location}/usr/sbin/logrotate gzip-binary = ${gzip:location}/bin/gzip gunzip-binary = ${gzip:location}/bin/gunzip # Directories wrapper = $${rootdirectory:bin}/logrotate conf = $${rootdirectory:etc}/logrotate.conf logrotate-entries = $${directory:logrotate-entries} backup = $${directory:logrotate-backup} state-file = $${rootdirectory:srv}/logrotate.status [publish-kvm-frontend-connection-information] recipe = slapos.cookbook:publish ip = $${frontend-instance:ip} port = $${frontend-instance:port} [slap-parameter] # Default value if no port is specified port = 4443 http-redirection = 0 # [logrotate-entry-frontend] # <= logrotate # recipe = slapos.cookbook:logrotate.d # name = frontend # log = $${mariadb-instance:error-log} $${mariadb-instance:slow-query-log} # post = $${mariadb-instance:mysql-binary} --no-defaults -B --socket=$${mariadb-instance:socket} -e "FLUSH LOGS"