summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO.md3
-rwxr-xr-xshare/hydractl/backup-restore-git5
-rwxr-xr-xshare/hydractl/backup-restore-puppet65
3 files changed, 72 insertions, 1 deletions
diff --git a/TODO.md b/TODO.md
index f72feae..b2b4e7d 100644
--- a/TODO.md
+++ b/TODO.md
@@ -11,3 +11,6 @@ Hydractl
--------
- provision: config parser using a custom function with `include` directive, avoiding `source`.
+ - backup-restore-site: fix parameters
+ - backup-restore-{munin,nagios}
+ - puppet-initialize: initialize a master node from a backup
diff --git a/share/hydractl/backup-restore-git b/share/hydractl/backup-restore-git
index f338993..29a4598 100755
--- a/share/hydractl/backup-restore-git
+++ b/share/hydractl/backup-restore-git
@@ -34,7 +34,7 @@ hydra_backup_environment_service
# TODO: directly at hydra_backup_environment_service
hydractl backup-site $SERVICE
-# Remove current folder
+# Remove current folder.
rm -rf $SERVICE_DIR
# Copy site folder from backup.
@@ -42,3 +42,6 @@ cp -a $RESTOREDIR/$SERVICE_DIR $SERVICE_DIR
# Fix permissions.
chown -R $SERVICE_USER.$SERVICE_GROUP $SERVICE_DIR
+
+# Kick config.
+su $SERVICE_USER -c "gl-setup"
diff --git a/share/hydractl/backup-restore-puppet b/share/hydractl/backup-restore-puppet
new file mode 100755
index 0000000..a36a361
--- /dev/null
+++ b/share/hydractl/backup-restore-puppet
@@ -0,0 +1,65 @@
+#!/bin/bash
+#
+# Restore puppet configuration, keys, certificates and runtime data.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/>.
+
+# Load
+source $APP_BASE/lib/hydra/functions || exit 1
+hydra_config_load
+
+# Command line arguments
+BASENAME="`basename $0`"
+
+# Parameters.
+HOST="$1"
+SERVICE="apache2"
+SERVICE_DIR="/var/lib/puppetmaster"
+SERVICE_USER="puppet"
+SERVICE_GROUP="puppet"
+
+# Check environment
+if [ ! -f "/var/git/repositories/puppet.git/config" ]; then
+ echo "fatal: you have to restore /var/git/repositories/puppet.git first"
+ exit 1
+fi
+
+# Set restore environment.
+hydra_backup_environment_service
+
+# TODO: Backup $SERVICE_DIR and /etc/puppet
+
+# Stop services
+/etc/init.d/puppet stop
+/etc/init.d/$service stop
+
+# Remove current folder
+rm -rf $SERVICE_DIR
+rm -rf /etc/puppet
+
+# Clone puppet configuration
+git clone /var/git/repositories/puppet.git/ /etc/puppet/
+( cd /etc/puppet && git submodule update --init --recursive )
+
+# Copy site folder from backup.
+cp -a $RESTOREDIR/$SERVICE_DIR $SERVICE_DIR
+
+# Fix permissions.
+chown -R $SERVICE_USER.$SERVICE_GROUP $SERVICE_DIR
+chown -R $SERVICE_USER.$SERVICE_GROUP /etc/puppet
+
+# Start services
+/etc/init.d/$service start
+/etc/init.d/puppet start