[buildout] extends = template-runner.cfg ${pbsready-import:output} parts += nginx_conf nginx-launcher certificate-authority ca-nginx gunicorn-launcher gunicorn-graceful sshkeys-dropbear-runner dropbear-server-add-authorized-key sshkeys-authority slaprunner-promise slaprunner-supervisord-wrapper dropbear-promise runtestsuite shellinabox symlinks slapos-cfg slapos-repo cron-entry-prepare-software deploy-instance-parameters instance-software-type bash-profile supervisord-wrapper importer-consistency-promise # have to repeat the next one, as it's not inherited from pbsready-import import-on-notification ## Monitoring part ###Parts to add for monitoring cron certificate-authority cron-entry-monitor cron-entry-rss deploy-index deploy-settings-cgi deploy-status-cgi deploy-status-history-cgi setup-static-files certificate-authority zero-parameters public-symlink cgi-httpd-wrapper cgi-httpd-graceful-wrapper monitor-promise monitor-instance-log-access ## Monitor for runner monitor-current-log-access monitor-backup-log-access ## Monitor for import runner monitor-latest-restored-backup # For the needs of importer, we run the full slaprunner # In case both exporter and importer (aka main instance and clone instance) # run with the same IP (usually for testing purposes), # run slaprunner using different ports. [slaprunner] proxy_port = 50000 runner_port = 50005 [importer] recipe = slapos.recipe.template:jinja2 template = ${template-runner-import-script:location}/${template-runner-import-script:filename} rendered = $${directory:bin}/$${slap-parameter:namebase}-importer # backward compatibility for resilient stack wrapper = $${:rendered} mode = 700 restore-exit-code-file=$${directory:srv}/importer-exit-code-file context = key backend_url slaprunner:access-url key proxy_host slaprunner:ipv4 section directory directory raw shell_binary ${dash:location}/bin/dash raw rsync_binary ${rsync:location}/bin/rsync raw restore_exit_code_file $${:restore-exit-code-file} [importer-consistency-promise] # Test that the importer script and "after-import" subscripts: # 1/ Have been run in the last 24 hours # 2/ Have succeeded recipe = collective.recipe.template input = inline: #!/bin/sh EXIT_CODE_FILE=$(find "$${importer:restore-exit-code-file}" -mtime -1) if [ -z "$EXIT_CODE_FILE" ]; then echo "Consistency check is too old." exit 1 fi EXIT_CODE=$(cat $EXIT_CODE_FILE) exit $EXIT_CODE output = $${directory:promises}/importer-consistency-promise mode = 755 [slap-parameter] auto-deploy-instance = false auto-deploy = true [resilient-publish-connection-parameter] monitor-url = $${monitor-parameters:url} [monitor-backup-log-access] < = monitor-directory-access source = $${directory:logrotate-backup} [monitor-latest-restored-backup] recipe = slapos.recipe.template:jinja2 command = if [ -f $${directory:etc}/.resilient-timestamp ]; then echo "$(date -d @$(cat $${directory:etc}/.resilient-timestamp) +%c)"; else echo "No backup timestamp found"; fi rendered = $${monitor-directory:monitoring-cgi}/latest-restored-backup template = ${template-wrapper:output} mode = 744 context = key content :command