diff options
Diffstat (limited to 'share')
-rwxr-xr-x | share/hydra/newkeys | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/share/hydra/newkeys b/share/hydra/newkeys index baffe28..84180ba 100755 --- a/share/hydra/newkeys +++ b/share/hydra/newkeys @@ -19,7 +19,17 @@ function hydra_newkeys { # Generates ssh and gpg keys for new or existing nodes # GPG keys should be manually imported in the nodes - if [ ! -z "$1" ]; then + local node + local which + + if [ -z "$1" ]; then + which="new" + else + which="$1" + fi + + if [ ! -z "$2" ]; then + shift NODES="$*" else NODES="`hydra $HYDRA nodes`" @@ -27,19 +37,24 @@ function hydra_newkeys { for node in $NODES; do node="`hydra_get_fqdn_from_nodename $node`" - sshkey="$HYDRA_FOLDER/keyring/keys/nodes/$fqdn/ssh/id_rsa.asc" - gpgkey="$HYDRA_FOLDER/keyring/keys/nodes/$fqdn/gpg/key.asc" - if [ "$1" == "all" ]; then - hydra_genpairs - elif [ "$1" == "all-ssh" ]; then - hydra_genpairs ssh - elif [ "$1" == "all-pgp" ]; then - hydra_genpairs pgp - elif [ ! -z "$1" ] && [ "$fqdn" == "$1" ]; then - hydra_genpairs $2 - exit $? - elif [ ! -e "$sshkey" ] || [ ! -e "$gpgkey" ]; then - hydra_genpairs + sshkey="$HYDRA_FOLDER/keyring/keys/nodes/$node/ssh/id_rsa.asc" + gpgkey="$HYDRA_FOLDER/keyring/keys/nodes/$node/gpg/key.asc" + + if [ "$which" == "all" ]; then + hydra_genpairs ssh $node + hydra_genpairs openpgp $node + elif [ "$which" == "new" ]; then + if [ ! -e "$sshkey" ]; then + hydra_genpairs ssh $node + fi + + if [ ! -e "$gpgkey" ]; then + hydra_genpairs openpgp $node + fi + elif [ "$which" == "ssh" ]; then + hydra_genpairs ssh $node + elif [ "$which" == "openpgp" ]; then + hydra_genpairs openpgp $node fi done } @@ -47,16 +62,19 @@ function hydra_newkeys { function hydra_genpairs { BASEDIR="/tmp" - if [ "$1" != "pgp" ]; then - keyringer $HYDRA genpair ssh nodes/$fqdn/ssh/id_rsa $fqdn - fi + local which="$1" + local node="$2" - if [ "$1" != "ssh" ]; then - keyringer $HYDRA genpair gpg nodes/$fqdn/gpg/key $fqdn + if [ "$which" == "openpgp" ]; then + keyringer $HYDRA genpair gpg nodes/$node/gpg/key $node + elif [ "$which" == "ssh" ]; then + keyringer $HYDRA genpair ssh nodes/$node/ssh/id_rsa $node + else + return fi hydra_set_tmpfile genpair - echo "Importing keys for $fqdn" > $TMPWORK + echo "Importing $which keys for $node" > $TMPWORK keyringer $HYDRA git commit -F $TMPWORK keyringer $HYDRA git push |