]> gitweb.fluxo.info Git - hydra.git/commitdiff
Compile: add known_hosts aliases with custom ports
authorSilvio Rhatto <rhatto@riseup.net>
Thu, 24 May 2018 14:15:53 +0000 (11:15 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Thu, 24 May 2018 14:15:53 +0000 (11:15 -0300)
share/hydra/compile

index e653e3f6d5b54aca41474dc956f05ec3b015d79d..567a78f2f21fea1978f11589bdad4832aae42ccd 100755 (executable)
@@ -56,6 +56,45 @@ for node in $NODES; do
     sshed25519key="$(grep sshed25519key: $FACTS/${node}.yaml | cut -d ':' -f 2 | sed -e 's/ //g' -e 's/"//g')"
     sshecdsakey="$(grep sshecdsakey: $FACTS/${node}.yaml | cut -d ':' -f 2 | sed -e 's/ //g' -e 's/"//g')"
 
+    # Determine host aliases depending on sshd::ports config
+    host_aliases=""
+    hiera="hiera --config $HYDRA_FOLDER/puppet/hiera.yaml"
+    hiera_params="settings::confdir=$HYDRA_FOLDER/puppet ::clientcert=$node"
+    role="`$hiera nodo::role $hiera_params 2> /dev/null`"
+    location="`$hiera nodo::location $hiera_params 2> /dev/null`"
+    virtual="$(grep "^virtual: " $FACTS/${node}.yaml | cut -d ':' -f 2 | sed -e 's/ //g' -e 's/"//g')"
+    domain="$(grep "^domain: " $FACTS/${node}.yaml | cut -d ':' -f 2 | sed -e 's/ //g' -e 's/"//g')"
+
+    if [ ! -z "$virtual" ]; then
+      hiera_params="$hiera_params ::virtual=$virtual"
+    fi
+
+    if [ ! -z "$role" ]; then
+      hiera_params="$hiera_params ::nodo::role=$role"
+    fi
+
+    if [ ! -z "$location" ]; then
+      hiera_params="$hiera_params ::nodo::location=$location"
+    fi
+
+    if [ ! -z "$domain" ]; then
+      hiera_params="$hiera_params ::domain=$domain"
+    fi
+
+    ssh_ports="`$hiera sshd::ports $hiera_params 2> /dev/null`"
+
+    if [ "$ssh_ports" != "nil" ] && [ ! -z "$ssh_ports" ]; then
+      ssh_ports="`echo $ssh_ports | sed -e 's/\[//g' -e 's/\]//g' -e 's/,//g'`"
+
+      for port in $ssh_ports; do
+        if [ -z "$host_aliases" ]; then
+          host_aliases="'[${node}]:$port'"
+        else
+          host_aliases="$host_aliases, '[${node}]:$port'"
+        fi
+      done
+    fi
+
     if [ ! -z "$rsakey" ]; then
       #echo "  $node-rsa:"                      >> $CONFIG
       echo "  $node:"                          >> $CONFIG
@@ -63,6 +102,10 @@ for node in $NODES; do
       echo "    ensure: 'present'"             >> $CONFIG
       echo "    type  : 'ssh-rsa'"             >> $CONFIG
       echo "    key   : '$rsakey'"             >> $CONFIG
+
+      if [ ! -z "$host_aliases" ]; then
+        echo "    host_aliases   : [ $host_aliases ]"             >> $CONFIG
+      fi
     fi
 
     # See [PUP-6589] Resource Type sshkey doesn't allow the declaration of multiple SSH host keys for one host