#!/usr/bin/env bash cd $(dirname $0) CMDFILE="$1" shift 1 CLUSTER="$1" if [ -z "$CLUSTER" ] || [ ! -d "cluster/$CLUSTER" ]; then echo "Usage: $CMDFILE " echo "The cluster name must be the name of a subdirectory of cluster/" exit 1 fi shift 1 if [ -z "$1" ]; then NIXHOSTLIST=$(ls cluster/$CLUSTER/node | grep '\.nix$' | grep -v '\.site\.') else NIXHOSTLIST="$@" fi if [ -z "$ROOT_PASS" ]; then read -s -p "Enter remote sudo password: " ROOT_PASS echo fi SSH_CONFIG=cluster/$CLUSTER/ssh_config function header { cat < /tmp/deploytool_askpass < /dev/null $(base64 <$FROM) EOG EOF } function copy_secret { local FROM=$1 local TO=$2 cat < /dev/null $(base64 <$FROM) EOG chown root:root $TO chmod 0600 $TO EOF } function write_pass { local PASSKEY=$1 local TO=$2 cat < /dev/null $(pass $PASSKEY | base64) EOG chown root:root $TO chmod 0600 $TO EOF } for NIXHOST in $NIXHOSTLIST; do NIXHOST=${NIXHOST%.*} if [ -z "$SSH_USER" ]; then SSH_DEST=$NIXHOST else SSH_DEST=$SSH_USER@$NIXHOST fi echo "==== DOING $NIXHOST ====" (header; . $CMDFILE; footer) | ssh -F $SSH_CONFIG $SSH_DEST sh - done