From 1505c5129416b3eb47f20581633c7dc5b2de1eca Mon Sep 17 00:00:00 2001 From: Antoine Catton <acatton@tiolive.com> Date: Wed, 16 Nov 2011 11:58:49 +0100 Subject: [PATCH] Switch lamp stack to pull backup server. --- stack/lamp/buildout.cfg | 81 ++++++++--- stack/lamp/instance-apache-php.cfg | 7 +- stack/lamp/instance-backuped.cfg | 52 ++++++- .../lamp/instance-mariadb-pbsready-export.cfg | 27 ++++ .../lamp/instance-mariadb-pbsready-import.cfg | 45 ++++++ stack/lamp/instance-mariadb-pbsready.cfg | 76 +++++++++++ .../instance-mariadb-pseudo-replicating.cfg | 72 ---------- .../lamp/instance-mariadb-remote-backuped.cfg | 71 ---------- stack/lamp/instance-mariadb.cfg | 31 +++-- stack/lamp/instance-pull-backup.cfg | 129 ++++++++++++++++++ stack/lamp/instance.cfg | 5 +- 11 files changed, 409 insertions(+), 187 deletions(-) create mode 100644 stack/lamp/instance-mariadb-pbsready-export.cfg create mode 100644 stack/lamp/instance-mariadb-pbsready-import.cfg create mode 100644 stack/lamp/instance-mariadb-pbsready.cfg delete mode 100644 stack/lamp/instance-mariadb-pseudo-replicating.cfg delete mode 100644 stack/lamp/instance-mariadb-remote-backuped.cfg create mode 100644 stack/lamp/instance-pull-backup.cfg diff --git a/stack/lamp/buildout.cfg b/stack/lamp/buildout.cfg index c1848d7d8f..cac17e3906 100644 --- a/stack/lamp/buildout.cfg +++ b/stack/lamp/buildout.cfg @@ -7,16 +7,32 @@ parts = mariadb mydumper mysql-python - duplicity + rdiff-backup + dropbear eggs instance-recipe-egg template template-apache-php template-mariadb - template-mariadb-remote-backuped - template-mariadb-pseudo-replicating - + template-mariadb-pbsready + template-mariadb-pbsready-import + template-mariadb-pbsready-export + +allow-hosts = + *.nexedi.org + *.python.org + *.sourceforge.net + alastairs-place.net + dist.repoze.org + effbot.org + github.com + peak.telecommunity.com + psutil.googlecode.com + www.dabeaz.com + launchpad.net + extends = + ../shacache-client.cfg ../../component/mariadb/buildout.cfg ../../component/apache/buildout.cfg ../../component/apache-php/buildout.cfg @@ -29,14 +45,19 @@ extends = ../../component/sqlite3/buildout.cfg ../../component/lxml-python/buildout.cfg ../../component/zlib/buildout.cfg - ../../component/duplicity/buildout.cfg + ../../component/rdiff-backup/buildout.cfg ../../component/gzip/buildout.cfg ../../component/stunnel/buildout.cfg ../../component/mydumper/buildout.cfg ../../component/mysql-python/buildout.cfg + ../../component/dropbear/buildout.cfg versions = versions +[mariadb] +# Compile dir is for plugins, there's no plugin in LAMP +keep-compile-dir = false + [instance-recipe] egg = slapos.cookbook module = lamp.request @@ -55,42 +76,56 @@ strip-top-level-dir = true recipe = slapos.recipe.template url = ${:_profile_base_location_}/instance.cfg output = ${buildout:directory}/template.cfg -md5sum = 5cc5d92298e8b36067c9b7721561b81f +md5sum = f4e4cf75225685e1787c0bc6d1c16910 mode = 0644 [template-apache-php] recipe = slapos.recipe.template url = ${:_profile_base_location_}/instance-apache-php.cfg output = ${buildout:directory}/template-apache-php.cfg -md5sum = b7a9c86166c49443ecc4db276ef09dec +md5sum = c6142b3d1606d2c98fedefb81f5a5638 mode = 0644 [template-backuped] recipe = slapos.recipe.template url = ${:_profile_base_location_}/instance-backuped.cfg output = ${buildout:directory}/template-backuped.cfg -md5sum = e5cdaa121a6d66d119278e4cf90e7bb0 +md5sum = 4190baa5e3f87a02e8721aeac3b70942 mode = 0644 [template-mariadb] recipe = slapos.recipe.template url = ${:_profile_base_location_}/instance-mariadb.cfg output = ${buildout:directory}/template-mariadb.cfg -md5sum = 52237e8921b070d0de3bb2f6716d40c7 +md5sum = d0670508b0c38879a2c7965ad5b2ab57 mode = 0644 -[template-mariadb-remote-backuped] +[template-mariadb-pbsready] recipe = slapos.recipe.template -url = ${:_profile_base_location_}/instance-mariadb-remote-backuped.cfg -output = ${buildout:directory}/template-mariadb-remote-backuped.cfg -md5sum = 222bb187b5628536a20a809f3faf31f8 +url = ${:_profile_base_location_}/instance-mariadb-pbsready.cfg +output = ${buildout:directory}/template-mariadb-pbsready.cfg +md5sum = cfc87bb3bb1d4aa4ffd11e4b6dfcabe7 mode = 0644 -[template-mariadb-pseudo-replicating] +[template-mariadb-pbsready-import] recipe = slapos.recipe.template -url = ${:_profile_base_location_}/instance-mariadb-pseudo-replicating.cfg -output = ${buildout:directory}/template-mariadb-pseudo-replicating.cfg -md5sum = e9f1d5f6dd5f7995d0be06863d196de9 +url = ${:_profile_base_location_}/instance-mariadb-pbsready-import.cfg +output = ${buildout:directory}/template-mariadb-pbsready-import.cfg +md5sum = 483796d0e0ebdc86fb6fe6589bb8ed7e +mode = 0644 + +[template-mariadb-pbsready-export] +recipe = slapos.recipe.template +url = ${:_profile_base_location_}/instance-mariadb-pbsready-export.cfg +output = ${buildout:directory}/template-mariadb-pbsready-export.cfg +md5sum = 112f259b613eefa94f8cc83a0e2aa9f3 +mode = 0644 + +[template-pull-backup] +recipe = slapos.recipe.template +url = ${:_profile_base_location_}/instance-pull-backup.cfg +output = ${buildout:directory}/template-pull-backup.cfg +md5sum = 46bd46a0b46f39937ab3d604eeb20441 mode = 0644 [eggs] @@ -99,5 +134,15 @@ eggs = ${lxml-python:egg} [versions] -slapos.cookbook = +setuptools = 0.6c12dev-r88795 zc.buildout = 1.6.0-dev-SlapOS-002 +slapos.core = +slapos.cookbook = + +collective.recipe.template = 1.8 +hexagonit.recipe.cmmi = 1.5.0 +hexagonit.recipe.download = 1.5.0 +plone.recipe.command = 1.1 + +netaddr = 0.7.5 +xml-marshaller = 0.9.7 diff --git a/stack/lamp/instance-apache-php.cfg b/stack/lamp/instance-apache-php.cfg index 69bf3e2836..b5410c4b9a 100644 --- a/stack/lamp/instance-apache-php.cfg +++ b/stack/lamp/instance-apache-php.cfg @@ -145,13 +145,13 @@ dcrond-binary = ${dcron:location}/sbin/crond cron-entries = $${directory:cron-entries} crontabs = $${directory:crontabs} cronstamps = $${directory:cronstamps} -catcher = $${cron-simplelogger:binary} +catcher = $${cron-simplelogger:wrapper} binary = $${basedirectory:services}/crond [cron-simplelogger] recipe = slapos.cookbook:simplelogger -binary = $${rootdirectory:bin}/cron_simplelogger -output = $${directory:cronoutput} +wrapper = $${rootdirectory:bin}/cron_simplelogger +log = $${basedirectory:log}/crond.log [cron-entry-logrotate] <= cron @@ -189,4 +189,3 @@ stunnel-conf = $${rootdirectory:etc}/stunnel/ cronstamps = $${rootdirectory:etc}/cronstamps/ cron-entries = $${rootdirectory:etc}/cron.d/ crontabs = $${rootdirectory:etc}/crontabs/ -cronoutput = $${basedirectory:log}/cron-ouput/ diff --git a/stack/lamp/instance-backuped.cfg b/stack/lamp/instance-backuped.cfg index 7558d94cef..b83f6fce8b 100644 --- a/stack/lamp/instance-backuped.cfg +++ b/stack/lamp/instance-backuped.cfg @@ -6,6 +6,9 @@ extends = parts = request-mariadb request-mariadb-pseudo-replicating + request-pull-backup-server + request-pull-backup-server-mariadb + request-pull-backup-server-mariadb-backup url apache-php stunnel @@ -17,16 +20,51 @@ parts = cron cron-entry-logrotate +[request-pull-backup-server] +<= slap-connection +recipe = slapos.cookbook:request +name = PBS (Pull Backup Server) +software-url = $${slap-connection:software-release-url} +software-type = pull-backup +return = ssh-key +slave = false + [request-mariadb] -software-type = mariadb-remote-backuped -config = backup-url -config-backup-url = $${slap-parameter:backup-url} +software-type = mariadb-pbsready-export +config = authorized-key +config-authorized-key = $${request-pull-backup-server:connection-ssh-key} +return = url ssh-public-key ssh-url [request-mariadb-pseudo-replicating] <= slap-connection recipe = slapos.cookbook:request -name = MariaDB (pseudo-replicate) +name = MariaDB (backup) software-url = $${slap-connection:software-release-url} -software-type = mariadb-pseudo-replicating -config = backup-url -config-backup-url = $${slap-parameter:backup-url} +software-type = mariadb-pbsready-import +return = url ssh-public-key ssh-url +config = authorized-key +config-authorized-key = $${request-pull-backup-server:connection-ssh-key} + +[request-pull-backup-server-mariadb] +<= request-pull-backup-server + slap-connection +name = PBS pulling from MariaDB (backuped) +config = url name type server-key frequency +config-url = $${request-mariadb:connection-ssh-url} +config-name = $${slap-connection:computer-id}-$${slap-connection:partition-id}-mariadb +config-type = pull +config-server-key = $${request-mariadb:connection-ssh-public-key} +config-frequency = 15 0 * * * +slave = true + +[request-pull-backup-server-mariadb-backup] +<= request-pull-backup-server + slap-connection +name = PBS pushing on MariaDB (ready to use backup) +config = url name type server-key frequency +config-url = $${request-mariadb-pseudo-replicating:connection-ssh-url} +config-name = $${slap-connection:computer-id}-$${slap-connection:partition-id}-mariadb +config-type = push +config-server-key = $${request-mariadb-pseudo-replicating:connection-ssh-public-key} +config-frequency = 45 0 * * * +slave = true diff --git a/stack/lamp/instance-mariadb-pbsready-export.cfg b/stack/lamp/instance-mariadb-pbsready-export.cfg new file mode 100644 index 0000000000..e54edca093 --- /dev/null +++ b/stack/lamp/instance-mariadb-pbsready-export.cfg @@ -0,0 +1,27 @@ +[buildout] +extends = ${template-mariadb-pbsready:output} + +parts += cron-entry-mariadb-backup + +[mydumper] +recipe = slapos.cookbook:mydumper +wrapper = $${rootdirectory:bin}/raw_mydumper +backup-directory = $${directory:mariadb-backup} +socket = $${mariadb:socket} +user = root +mydumper-binary = ${mydumper:location}/bin/mydumper +database = $${mariadb:database} +import = false + +[mydumper-locked] +recipe = slapos.cookbook:lockfile +lock-file = $${basedirectory:run}/mysql-backup.lock +binary = $${mydumper:wrapper} +wrapper = $${rootdirectory:bin}/mydumper + +[cron-entry-mariadb-backup] +<= cron +recipe = slapos.cookbook:cron.d +name = backup +frequency = 0 * * * * +command = $${mydumper-locked:wrapper} diff --git a/stack/lamp/instance-mariadb-pbsready-import.cfg b/stack/lamp/instance-mariadb-pbsready-import.cfg new file mode 100644 index 0000000000..31a606dc61 --- /dev/null +++ b/stack/lamp/instance-mariadb-pbsready-import.cfg @@ -0,0 +1,45 @@ +[buildout] + +extends = ${template-mariadb-pbsready:output} + +parts = + urls + mariadb + stunnel + certificate-authority + ca-stunnel + logrotate + logrotate-entry-mariadb + logrotate-entry-stunnel + logrotate-entry-cron + cron + cron-entry-logrotate + sshkeys-authority + dropbear-server + sshkeys-dropbear + dropbear-server-pbs-authorized-key + cron-entry-mariadb-import + +[mydumper-import] +recipe = slapos.cookbook:mydumper +wrapper = $${rootdirectory:bin}/raw_myloader +backup-directory = $${directory:mariadb-backup} +socket = $${mariadb:socket} +user = root +myloader-binary = ${mydumper:location}/bin/myloader +database = $${mariadb:database} +import = true + +[mydumper-import-locked] +recipe = slapos.cookbook:lockfile +lock-file = $${basedirectory:run}/import.lock +wrapper = $${rootdirectory:bin}/myloader +binary = $${mydumper-import:wrapper} +wait = true + +[cron-entry-mariadb-import] +<= cron +recipe = slapos.cookbook:cron.d +name = mariadb_import +frequency = 0 * * * * +command = $${mydumper-import-locked:wrapper} diff --git a/stack/lamp/instance-mariadb-pbsready.cfg b/stack/lamp/instance-mariadb-pbsready.cfg new file mode 100644 index 0000000000..56d50ab06a --- /dev/null +++ b/stack/lamp/instance-mariadb-pbsready.cfg @@ -0,0 +1,76 @@ +[buildout] + +extends = ${template-mariadb:output} + +parts = + urls + mariadb + stunnel + certificate-authority + ca-stunnel + logrotate + logrotate-entry-mariadb + logrotate-entry-stunnel + logrotate-entry-cron + cron + cron-entry-logrotate + sshkeys-authority + dropbear-server + sshkeys-dropbear + dropbear-server-pbs-authorized-key + +[urls] +ssh-public-key = $${sshkeys-dropbear:public-key-value} +ssh-url = ssh://nobody@[$${dropbear-server:host}]:$${dropbear-server:port}/$${rdiff-backup-server:path} + +[sshkeys-directory] +recipe = slapos.cookbook:mkdirectory +requests = $${directory:sshkeys}/requests/ +keys = $${directory:sshkeys}/keys/ + +[sshkeys-authority] +recipe = slapos.cookbook:sshkeys_authority +request-directory = $${sshkeys-directory:requests} +keys-directory = $${sshkeys-directory:keys} +wrapper = $${basedirectory:services}/sshkeys_authority +keygen-binary = ${dropbear:location}/bin/dropbearkey + +[sshkeys-dropbear] +<= sshkeys-authority +recipe = slapos.cookbook:sshkeys_authority.request +name = dropbear +type = rsa +executable = $${dropbear-server:wrapper} +public-key = $${dropbear-server:rsa-keyfile}.pub +private-key = $${dropbear-server:rsa-keyfile} +wrapper = $${basedirectory:services}/sshd + +[dropbear-server] +recipe = slapos.cookbook:dropbear +host = $${slap-network-information:global-ipv6} +port = 2222 +home = $${directory:ssh} +wrapper = $${rootdirectory:bin}/raw_sshd +shell = $${rdiff-backup-server:wrapper} +rsa-keyfile = $${directory:ssh}/server_key.rsa +dropbear-binary = ${dropbear:location}/sbin/dropbear + +[dropbear-server-pbs-authorized-key] +<= dropbear-server +recipe = slapos.cookbook:dropbear.add_authorized_key +key = $${slap-parameter:authorized-key} + +[rdiff-backup-server] +recipe = slapos.cookbook:rdiffbackup +client = false +path = $${directory:mariadb-backup} +wrapper = $${rootdirectory:bin}/rdiffbackup-server +rdiffbackup-binary = ${buildout:bin-directory}/rdiff-backup + +[basedirectory] +cache = $${rootdirectory:var}/cache/ + +[directory] +mariadb-backup = $${basedirectory:backup}/mariadb/ +ssh = $${rootdirectory:etc}/ssh/ +sshkeys = $${rootdirectory:srv}/sshkeys diff --git a/stack/lamp/instance-mariadb-pseudo-replicating.cfg b/stack/lamp/instance-mariadb-pseudo-replicating.cfg deleted file mode 100644 index 82aab52490..0000000000 --- a/stack/lamp/instance-mariadb-pseudo-replicating.cfg +++ /dev/null @@ -1,72 +0,0 @@ -[buildout] -parts = - url - mariadb - duplicity-recover - mydumper-import - stunnel - certificate-authority - ca-stunnel - logrotate - logrotate-entry-mariadb - logrotate-entry-stunnel - cron - cron-entry-logrotate - cron-entry-duplicity-recover - cron-entry-mariadb-import - -extends = ${template-mariadb:output} - -[duplicity-recover] -recipe = slapos.cookbook:duplicity -remote-backup = $${slap-parameter:backup-url} -local-directory = $${directory:duplicity-recover} -duplicity-binary = ${buildout:bin-directory}/duplicity -wrapper = $${rootdirectory:bin}/raw_duplicity -cache = $${directory:duplicity-cache} -recover = true - -[duplicity-recover-locked] -recipe = slapos.cookbook:lockfile -lock-file = $${mydumper-import-locked:lock-file} -wrapper = $${rootdirectory:bin}/duplicity -binary = $${duplicity-recover:wrapper} -wait = true - -[mydumper-import] -recipe = slapos.cookbook:mydumper -wrapper = $${rootdirectory:bin}/raw_myloader -backup-directory = $${directory:duplicity-recover} -socket = $${mariadb:socket} -user = root -myloader-binary = ${mydumper:location}/bin/myloader -database = $${mariadb:database} -import = true - -[mydumper-import-locked] -recipe = slapos.cookbook:lockfile -lock-file = $${basedirectory:run}/import.lock -wrapper = $${rootdirectory:bin}/myloader -binary = $${mydumper-import:wrapper} -wait = true - -[cron-entry-duplicity-recover] -<= cron -recipe = slapos.cookbook:cron.d -name = duplicity_recover -frequency = 30 * * * * -command = $${duplicity-recover-locked:wrapper} - -[cron-entry-mariadb-import] -<= cron -recipe = slapos.cookbook:cron.d -name = mariadb_import -frequency = 0 * * * * -command = $${mydumper-import-locked:wrapper} - -[basedirectory] -cache = $${rootdirectory:var}/cache/ - -[directory] -duplicity-recover = $${rootdirectory:srv}/recovering -duplicity-cache = $${basedirectory:cache}/duplicity diff --git a/stack/lamp/instance-mariadb-remote-backuped.cfg b/stack/lamp/instance-mariadb-remote-backuped.cfg deleted file mode 100644 index cdfe812029..0000000000 --- a/stack/lamp/instance-mariadb-remote-backuped.cfg +++ /dev/null @@ -1,71 +0,0 @@ -[buildout] -extends = - ${template-mariadb:output} - -parts = - url - mariadb - duplicity - stunnel - certificate-authority - ca-stunnel - logrotate - logrotate-entry-mariadb - logrotate-entry-stunnel - cron - cron-entry-logrotate - cron-entry-mariadb-backup - cron-entry-duplicity - -[mydumper] -recipe = slapos.cookbook:mydumper -wrapper = $${rootdirectory:bin}/raw_mydumper -backup-directory = $${directory:mariadb-backup} -socket = $${mariadb:socket} -user = root -mydumper-binary = ${mydumper:location}/bin/mydumper -database = $${mariadb:database} -import = false - -[mydumper-locked] -recipe = slapos.cookbook:lockfile -lock-file = $${basedirectory:run}/mysql-backup.lock -binary = $${mydumper:wrapper} -wrapper = $${rootdirectory:bin}/mydumper - -[duplicity] -recipe = slapos.cookbook:duplicity -remote-backup = $${slap-parameter:backup-url} -local-directory = $${mydumper:backup-directory} -duplicity-binary = ${buildout:bin-directory}/duplicity -wrapper = $${rootdirectory:bin}/raw_duplicity -recover = false -cache = $${directory:duplicity-cache} - -[duplicity-locked] -recipe = slapos.cookbook:lockfile -lock-file = $${mydumper-locked:lock-file} -binary = $${duplicity:wrapper} -wrapper = $${rootdirectory:bin}/duplicity -wait = true - -[cron-entry-duplicity] -<= cron -recipe = slapos.cookbook:cron.d -name = remote_backup -frequency = 30 * * * * -command = $${duplicity-locked:wrapper} - -[cron-entry-mariadb-backup] -<= cron -recipe = slapos.cookbook:cron.d -name = backup -frequency = 0 * * * * -command = $${mydumper-locked:wrapper} - -[basedirectory] -cache = $${rootdirectory:var}/cache/ - -[directory] -mariadb-backup = $${basedirectory:backup}/mariadb/ -duplicity-cache = $${basedirectory:cache}/duplicity/ diff --git a/stack/lamp/instance-mariadb.cfg b/stack/lamp/instance-mariadb.cfg index fcb18af318..81bdd851bb 100644 --- a/stack/lamp/instance-mariadb.cfg +++ b/stack/lamp/instance-mariadb.cfg @@ -1,6 +1,6 @@ [buildout] parts = - url + urls mariadb stunnel certificate-authority @@ -8,6 +8,7 @@ parts = logrotate logrotate-entry-mariadb logrotate-entry-stunnel + logrotate-entry-cron cron cron-entry-logrotate @@ -17,14 +18,9 @@ eggs-directory = ${buildout:eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory} offline = true -[url] -recipe = slapos.cookbook:publishurl -scheme = mysqls -username = $${mariadb:user} -password = $${mariadb:password} -host = $${stunnel:remote-host} -port = $${stunnel:remote-port} -path = $${mariadb:database} +[urls] +recipe = slapos.cookbook:publish +url = mysqls://$${mariadb:user}:$${mariadb:password}@[$${stunnel:remote-host}]:$${stunnel:remote-port}/$${mariadb:database} [mariadb] recipe = slapos.cookbook:mysql @@ -131,19 +127,29 @@ rotate-num = 30 notifempty = true create = true +[logrotate-entry-cron] +<= logrotate +recipe =slapos.cookbook:logrotate.d +name = crond +log = $${cron-simplelogger:log} +frequency = daily +rotate-num = 30 +notifempty = true +create = true + [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:binary} +catcher = $${cron-simplelogger:wrapper} binary = $${basedirectory:services}/crond [cron-simplelogger] recipe = slapos.cookbook:simplelogger -binary = $${rootdirectory:bin}/cron_simplelogger -output = $${directory:cronoutput} +wrapper = $${rootdirectory:bin}/cron_simplelogger +log = $${basedirectory:log}/crond.log [cron-entry-logrotate] <= cron @@ -172,7 +178,6 @@ recipe = slapos.cookbook:mkdirectory cron-entries = $${rootdirectory:etc}/cron.d/ crontabs = $${rootdirectory:etc}/crontabs/ cronstamps = $${rootdirectory:etc}/cronstamps/ -cronoutput = $${basedirectory:log}/cron/ ca-dir = $${rootdirectory:srv}/ssl/ mariadb-data = $${rootdirectory:srv}/mariadb/ logrotate-backup = $${basedirectory:backup}/logrotate/ diff --git a/stack/lamp/instance-pull-backup.cfg b/stack/lamp/instance-pull-backup.cfg new file mode 100644 index 0000000000..f1d46d7461 --- /dev/null +++ b/stack/lamp/instance-pull-backup.cfg @@ -0,0 +1,129 @@ +[buildout] + +parts = + connection-dict + rdiff-backup + cron + cron-entry-logrotate + logrotate + sshkeys-authority + sshkeys-dropbear + +eggs-directory = ${buildout:eggs-directory} +develop-eggs-directory = ${buildout:develop-eggs-directory} +offline = true + +[connection-dict] +recipe = slapos.cookbook:publish +ssh-key = $${sshkeys-dropbear:public-key-value} + +[dropbear-client] +recipe = slapos.cookbook:dropbear.client +dbclient-binary = ${dropbear:location}/bin/dbclient +wrapper = $${rootdirectory:bin}/ssh +home = $${basedirectory:ssh-home} +identity-file = $${basedirectory:ssh-home}/id_rsa + +[sshkeys-directory] +recipe = slapos.cookbook:mkdirectory +requests = $${directory:sshkeys}/requests/ +keys = $${directory:sshkeys}/keys/ + +[sshkeys-authority] +recipe = slapos.cookbook:sshkeys_authority +request-directory = $${sshkeys-directory:requests} +keys-directory = $${sshkeys-directory:keys} +keygen-binary = ${dropbear:location}/bin/dropbearkey +wrapper = $${basedirectory:services}/sshkeys_authority + +[sshkeys-dropbear] +<= sshkeys-authority +recipe = slapos.cookbook:sshkeys_authority.request +name = rdiff-backup +type = rsa +executable = $${dropbear-client:wrapper} +public-key = $${dropbear-client:identity-file}.pub +private-key = $${dropbear-client:identity-file} +wrapper = $${rootdirectory:bin}/do_backup + +[rdiff-backup] +recipe = slapos.cookbook:rdiffbackup +client = true +rdiffbackup-binary = ${buildout:bin-directory}/rdiff-backup +sshclient-binary = $${dropbear-client:wrapper} +known-hosts = $${directory:dot-ssh}/known_hosts +promises-directory = $${basedirectory:promises} +directory = $${directory:backups} +cron-entries = $${cron:cron-entries} +wrappers-directory = $${directory:pbs-wrappers} + +[cron-simplelogger] +recipe = slapos.cookbook:simplelogger +wrapper = $${rootdirectory:bin}/cron_simplelogger +log = $${basedirectory:log}/crond.log + +[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-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}/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 + +[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}/run/ +run = $${rootdirectory:var}/run/ +backup = $${rootdirectory:srv}/backup/ +promises = $${rootdirectory:etc}/promise/ + +[directory] +recipe = slapos.cookbook:mkdirectory +cronstamps = $${rootdirectory:etc}/cronstamps/ +cron-entries = $${rootdirectory:etc}/cron.d/ +crontabs = $${rootdirectory:etc}/crontabs/ +cronoutput = $${basedirectory:log}/cron-ouput/ +rdiff-backup-backup = $${basedirectory:backup}/rdiff-backup/ +logrotate-entries = $${rootdirectory:etc}/logrotate.d/ +logrotate-backup = $${basedirectory:backup}/logrotate/ +rdiff-backup = $${rootdirectory:etc}/rdiff-backup/ +sshkeys = $${rootdirectory:srv}/sshkeys +backups = $${basedirectory:backup}/backups/ +pbs-wrappers = $${rootdirectory:bin}/rdiff-backup/ +dot-ssh = $${basedirectory:ssh-home}/.ssh/ + +[basedirectory] +ssh-home = $${rootdirectory:home}/ssh + +[rootdirectory] +home = $${buildout:directory}/home/ diff --git a/stack/lamp/instance.cfg b/stack/lamp/instance.cfg index ed0eb869d4..93dbffeb00 100644 --- a/stack/lamp/instance.cfg +++ b/stack/lamp/instance.cfg @@ -11,5 +11,6 @@ recipe = slapos.cookbook:softwaretype default = ${template-apache-php:output} backuped = ${template-backuped:output} mariadb = ${template-mariadb:output} -mariadb-remote-backuped = ${template-mariadb-remote-backuped:output} -mariadb-pseudo-replicating = ${template-mariadb-pseudo-replicating:output} +mariadb-pbsready-import = ${template-mariadb-pbsready-import:output} +mariadb-pbsready-export = ${template-mariadb-pbsready-export:output} +pull-backup = ${template-pull-backup:output} -- 2.30.9