]> gitweb.fluxo.info Git - hydra.git/commitdiff
Adds deployment code
authorSilvio Rhatto <rhatto@riseup.net>
Tue, 8 Sep 2015 20:11:05 +0000 (17:11 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Tue, 8 Sep 2015 20:11:05 +0000 (17:11 -0300)
TODO.md
share/hydra/deploy [new file with mode: 0755]
share/hydra/install
share/hydractl/deploy [new file with mode: 0755]
share/hydractl/install

diff --git a/TODO.md b/TODO.md
index 10e6ab4aead2b28d8c0b3e11805cf9dd0eaf1735..6b6003608853c5a684bf7aa9eea17b43a1195345 100644 (file)
--- 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 (executable)
index 0000000..5904f5d
--- /dev/null
@@ -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
index cd479813af42272be5f2080accedd531e3243e21..739589b8851c5bd3c48f598eb6fda13ed02549b4 100755 (executable)
@@ -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 (executable)
index 0000000..450c92f
--- /dev/null
@@ -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
index 1b687db8b99ef493f54cd277800b9da0a0721070..db456145d30f874d852d3983903f15373d797735 100755 (executable)
@@ -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..."