infra-nimbus/scripts/create-ssh-config.sh
Zahary Karadjov e2244166ca
Simple Makefile target for generating a SSH config file with the fleet hosts
`make ssh-config` will generate a file ~/.ssh/config.d/infra-numbus with all
hostnames from the Ansible inventory. You can `Include` this file from your
main config file and re-generate it at will at any time. Having such a config
file makes it easier to ssh into any host on the fleet by taking advantage of
the built-in ssh hostname autocompletion in your shell.

The names of the entries were chosen in a way such that typing

ssh nimbus<tab>goerli<tab>

... produces the expected result.
2021-01-18 15:09:08 +01:00

33 lines
746 B
Bash
Executable File

#!/bin/usr/env bash
set -e
cd $(dirname "$0")
if [[ "${SSH_CONFIG_DIR}" == "" ]]; then
echo Please specify the SSH_CONFIG_DIR environment variable
exit 1
fi
if [[ "${SSH_CONFIG_FILE}" == "" ]]; then
echo Please specify the SSH_CONFIG_FILE environment variable
exit 1
fi
INFRA_NIMBUS_SSH_CONFIG="${SSH_CONFIG_DIR}/${SSH_CONFIG_FILE}"
: ${SSH_USERNAME:=$(whoami)}
mkdir -p "${SSH_CONFIG_DIR}" && chmod 700 "${SSH_CONFIG_DIR}"
rm -f "${INFRA_NIMBUS_SSH_CONFIG}"
for host in $(ansible all -i ../ansible/inventory/test --list-hosts | grep -v 'hosts')
do
cat << EOF >> "${INFRA_NIMBUS_SSH_CONFIG}"
Host nimbus-$host
Hostname $host.statusim.net
User ${SSH_USERNAME}
EOF
done
echo "Successfully written '${INFRA_NIMBUS_SSH_CONFIG}'"