aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/hydra/misc4
-rwxr-xr-xshare/hydra/newkeys33
2 files changed, 37 insertions, 0 deletions
diff --git a/lib/hydra/misc b/lib/hydra/misc
index 77f717d..fd90e93 100644
--- a/lib/hydra/misc
+++ b/lib/hydra/misc
@@ -39,6 +39,10 @@ function hydra_check_preferences {
echo "Puppet folder not found: $PUPPET."
exit 1
fi
+
+ if [ -z "$PUPPET_KEYS" ]; then
+ PUPPET_KEYS="$PUPPET/files/keys"
+ fi
}
# Load a parameter from config
diff --git a/share/hydra/newkeys b/share/hydra/newkeys
new file mode 100755
index 0000000..4970afb
--- /dev/null
+++ b/share/hydra/newkeys
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+# Create keys for new nodes.
+#
+
+function hydra_newkeys {
+ # Generates ssh and gpg keys for new nodes
+ # GPG keys should be manually imported in the nodes
+ for host in `hydra $HYDRA nodes`; do
+ node="`echo $host | cut -d . -f 1`"
+ privkey="$PUPPET_KEYS/"$node"_id_dsa"
+ pubkey="$privkey.pub"
+ if [ ! -e "$privkey" ] || [ ! -e "$pubkey" ]; then
+ keyringer $HYDRA genpair ssh $node/ssh/id_dsa $host $privkey
+ keyringer $HYDRA genpair gpg $node/gpg/key $host
+
+ # Add key into puppet git repository.
+ ( cd $PUPPET_KEYS && git add $privkey $pubkey )
+ fi
+ done
+}
+
+# Load.
+source $APP_BASE/lib/hydra/functions || exit 1
+hydra_config_load
+
+# Check for keyringer.
+if ! which keyringer &> /dev/null; then
+ echo "Error: please install keyringer."
+ exit 1
+fi
+
+hydra_newkeys