[buildout] parts = logrotate logrotate-entry-apache cron cron-entry-logrotate promise frontend-promise publish-connection-informations eggs-directory = ${buildout:eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory} newest = false #---------------- #-- #-- Creation of all needed directories. [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 backup = $${rootdirectory:srv}/backup promises = $${rootdirectory:etc}/promise [directory] recipe = slapos.cookbook:mkdirectory cron-entries = $${rootdirectory:etc}/cron.d crontabs = $${rootdirectory:etc}/crontabs cronstamps = $${rootdirectory:etc}/cronstamps ca-dir = $${rootdirectory:srv}/ssl httpd-log = $${basedirectory:log}/apache php-ini-dir = $${rootdirectory:etc}/php tmp-php = $${rootdirectory:tmp}/php logrotate-entries = $${rootdirectory:etc}/logrotate.d logrotate-backup = $${basedirectory:backup}/logrotate report = $${rootdirectory:etc}/report stunnel-conf = $${rootdirectory:etc}/stunnel xml-report = $${rootdirectory:var}/xml_report www = $${rootdirectory:srv}/www/ [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 #---------------- #-- #-- Deploy cron. [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}/crond.log #---------------- #-- #-- Deploy logrotate. [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 #---------------- #-- #-- Deploy Apache + PHP application. [apache-php] recipe = slapos.cookbook:lamp.generic url = $${slap-parameter:application-location} strip-top-level-dir = true # md5sum = # XXX-Cedric: add some "template" configuration htdocs = $${directory:www} pid-file = $${basedirectory:run}/apache.pid lock-file = $${basedirectory:run}/apache.lock ip = $${slap-network-information:global-ipv6} port = 8080 error-log = $${directory:httpd-log}/error.log access-log = $${directory:httpd-log}/access.log php-ini-dir = $${directory:php-ini-dir} tmp-dir = $${directory:tmp-php} httpd-conf = $${rootdirectory:etc}/apache.conf wrapper = $${basedirectory:services}/apache httpd-binary = ${apache:location}/bin/httpd [logrotate-entry-apache] <= logrotate recipe = slapos.cookbook:logrotate.d name = apache log = $${apache-php:error-log} $${apache-php:access-log} frequency = daily rotate-num = 30 sharedscripts = true notifempty = true create = true #---------------- #-- #-- Request frontend. [request-frontend] <= slap-connection recipe = slapos.cookbook:requestoptional name = Frontend # 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 = http://[$${apache-php:ip}]:$${apache-php:port}/ return = site_url config-custom_domain = $${slap-parameter:domain} #---------------- #-- #-- Publish instance parameters. [publish-connection-informations] recipe = slapos.cookbook:publish backend-url = http://[$${apache-php:ip}]:$${apache-php:port}/ url = $${request-frontend:connection-site_url} #---------------- #-- #-- Deploy promises scripts. [promise] recipe = slapos.cookbook:check_port_listening path = $${basedirectory:promises}/apache hostname = $${apache-php:ip} port = $${apache-php:port} [frontend-promise] recipe = slapos.cookbook:check_url_available path = $${basedirectory:promises}/frontend url = $${request-frontend:connection-site_url} dash_path = ${dash:location}/bin/dash curl_path = ${curl:location}/bin/curl [slap-parameter] # Default value if no domain is specified domain = # Default value if no ssh parameter is specified logbox-ip = logbox-port = logbox-user = logbox-passwd =