summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO.md4
-rwxr-xr-xshare/hydra/newkeys18
2 files changed, 16 insertions, 6 deletions
diff --git a/TODO.md b/TODO.md
index cce1abd..f67485c 100644
--- a/TODO.md
+++ b/TODO.md
@@ -6,9 +6,7 @@ Hydra
- module-update: get latest commit from production branch, setup branch if need.
- bootless: properly support `$subdevice` in parted or always use first partition (like `/dev/sdb1`).
- - newkeys:
- - split SSH/OpenPGP check: just generate OpenPGP key if absent.
- - add 'all-ssh' and 'all-pgp' options to generate either all SSH or all OpenPGP keys.
+ - newkeys: split SSH/OpenPGP check: just generate OpenPGP key if absent.
Hydractl
--------
diff --git a/share/hydra/newkeys b/share/hydra/newkeys
index 66ce846..35dce4f 100755
--- a/share/hydra/newkeys
+++ b/share/hydra/newkeys
@@ -17,7 +17,7 @@
# <http://www.gnu.org/licenses/>.
function hydra_newkeys {
- # Generates ssh and gpg keys for new nodes
+ # Generates ssh and gpg keys for new or existing nodes
# GPG keys should be manually imported in the nodes
for host in `hydra $HYDRA nodes`; do
node="`echo $host | cut -d . -f 1`"
@@ -25,6 +25,13 @@ function hydra_newkeys {
pubkey="$privkey.pub"
if [ "$1" == "all" ]; then
hydra_genpairs
+ elif [ "$1" == "all-ssh" ]; then
+ hydra_genpairs all-ssh
+ elif [ "$1" == "all-pgp" ]; then
+ hydra_genpairs all-pgp
+ elif [ ! -z "$1" ]; then
+ hydra_genpairs
+ exit $?
elif [ ! -e "$privkey" ] || [ ! -e "$pubkey" ]; then
hydra_genpairs
fi
@@ -34,8 +41,13 @@ function hydra_newkeys {
function hydra_genpairs {
BASEDIR="/tmp"
- keyringer $HYDRA genpair ssh $node/ssh/id_rsa $host $privkey
- keyringer $HYDRA genpair gpg $node/gpg/key $host
+ if [ "$1" != "all-pgp" ]; then
+ keyringer $HYDRA genpair ssh $node/ssh/id_rsa $host $privkey
+ fi
+
+ if [ "$1" != "all-ssh" ]; then
+ keyringer $HYDRA genpair gpg $node/gpg/key $host
+ fi
hydra_set_tmpfile genpair
echo "Importing keys for $host" > $TMPWORK