aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2015-09-08 17:11:05 -0300
committerSilvio Rhatto <rhatto@riseup.net>2015-09-08 17:11:05 -0300
commit6e446329869337f32dacae244269a6e5296fa91d (patch)
tree3dcd0fb35cfce4c0ae407decc6d2b22aaaa73cc7
parente0f6b1bc64d737aa03f1383b01c71989443d48a3 (diff)
downloadhydra-6e446329869337f32dacae244269a6e5296fa91d.tar.gz
hydra-6e446329869337f32dacae244269a6e5296fa91d.tar.bz2
Adds deployment code
-rw-r--r--TODO.md6
-rwxr-xr-xshare/hydra/deploy45
-rwxr-xr-xshare/hydra/install4
-rwxr-xr-xshare/hydractl/deploy25
-rwxr-xr-xshare/hydractl/install2
5 files changed, 77 insertions, 5 deletions
diff --git a/TODO.md b/TODO.md
index 10e6ab4..6b60036 100644
--- a/TODO.md
+++ b/TODO.md
@@ -10,14 +10,16 @@ Hydra
- check, install and test puppet pre-commit via git-hooks on all repositories using module-commit.
- bootless: properly support `$subdevice` in parted or always use first partition (like `/dev/sdb1`).
- ssh-config: hydra integration.
-- deploy: automatically set ORIGIN through config parameter.
+- install: automatically set ORIGIN through config parameter.
+- deploy: install keys
Hydractl
--------
- provision: config parser using a custom function with `include` directive, avoiding `source`.
+- install: PREFIX support.
+- deploy: install keys
- upgrade: run docker upgrade on all available images.
-- deploy: PREFIX support.
- site backup, copy and restoration: call backup-restore-user.
- wrapper to import/export monkeysphere keys into keyringer.
- backup-restore-site {debian,wiki}.
diff --git a/share/hydra/deploy b/share/hydra/deploy
new file mode 100755
index 0000000..5904f5d
--- /dev/null
+++ b/share/hydra/deploy
@@ -0,0 +1,45 @@
+#!/bin/bash
+#
+# Deploy a node using automated recipes.
+#
+# 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
+NODES="$*"
+
+# Build node list
+if [ -z "$NODES" ]; then
+ NODES="`hydra $HYDRA nodes`"
+fi
+
+# Deploy
+for node in $NODES; do
+ echo "Deploying to $node..."
+
+ # Sync repository to server
+ rsync -rlptD --delete --remote-rsync "sudo rsync" $HYDRA_FOLDER/puppet/ $node:/etc/puppet/
+
+ # Run puppet
+ $HYDRA_CONNECT $node <<EOF
+ ##### BEGIN REMOTE SCRIPT #####
+ sudo chown -R root. /etc/puppet
+ sudo puppet apply /etc/puppet/manifests/nodes/\$(facter fqdn).pp
+ ##### END REMOTE SCRIPT #######
+EOF
+done
diff --git a/share/hydra/install b/share/hydra/install
index cd47981..739589b 100755
--- a/share/hydra/install
+++ b/share/hydra/install
@@ -35,7 +35,7 @@ fi
# Deploy
for node in $NODES; do
- echo "Deploying to $node..."
+ echo "Installing to $node..."
$HYDRA_CONNECT $node <<EOF
##### BEGIN REMOTE SCRIPT #####
if ! which git &> /dev/null; then
@@ -50,7 +50,6 @@ for node in $NODES; do
else
( cd /usr/local/hydra ; sudo git pull ; sudo git reset --hard $COMMIT )
fi
- ##### END REMOTE SCRIPT #######
# Update symlinks
sudo ln -sf /usr/local/hydra/hydra /usr/local/bin/hydra
@@ -63,5 +62,6 @@ for node in $NODES; do
sudo rm -f /usr/local/sbin/hydra
sudo rm -f /usr/local/sbin/hydractl
sudo rm -f /usr/local/sbin/hydras
+ ##### END REMOTE SCRIPT #######
EOF
done
diff --git a/share/hydractl/deploy b/share/hydractl/deploy
new file mode 100755
index 0000000..450c92f
--- /dev/null
+++ b/share/hydractl/deploy
@@ -0,0 +1,25 @@
+#!/bin/bash
+#
+# Deploy a node using automated recipes.
+#
+# 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
+
+# Run puppet
+sudo puppet apply --confdir=$HYDRA_FOLDER/puppet \
+ --modulepath=$HYDRA_FOLDER/modules $HYDRA_FOLDER/puppet/manifests/nodes/$(facter fqdn).pp
diff --git a/share/hydractl/install b/share/hydractl/install
index 1b687db..db45614 100755
--- a/share/hydractl/install
+++ b/share/hydractl/install
@@ -31,7 +31,7 @@ if [ "`whoami`" != 'root' ]; then
fi
# Deploy
-echo "Deploying to local node..."
+echo "Installing to local node..."
if ! which git &> /dev/null; then
echo "Installing git..."