#!/bin/bash cmd_hostname="" cmd_do_bootstrap="no" cmd_fqdn="" function usage() { echo "Usage: $0 [-h] [-b] [-n fqdn] [--] []" echo " -h show help" echo " -b bootstrap (using ssh)" echo " -n specify FQDN (if not the same as )" echo "" echo " can be an IP number, or something that resolves to one" } while getopts "bhnp:" this; do case "${this}" in h) usage; exit 0;; b) cmd_do_bootstrap="yes" ;; n) cmd_fqdn="${OPTARG}" ; shift ;; p) cmd_proxy="${OPTARG}" ; shift ;; *) echo "Unknown option ${this}"; echo ""; usage; exit 1;; esac done shift $((OPTIND-1)) if [[ ! $cmd_hostname ]]; then cmd_hostname="$1" fi if [[ ! $cmd_fqdn ]]; then cmd_fqdn="$cmd_hostname" fi if test -z "$cmd_hostname"; then usage exit 1 fi if [[ -n $cmd_proxy ]]; then proxyjump="-o ProxyJump=${cmd_proxy}" fi test -f cosmos.conf && . ./cosmos.conf _remote=${remote:='ro'} defrepo=$(git remote get-url "${_remote}" 2>/dev/null) rrepo=${repo:="$defrepo"} rtag=${tag:="changeme"} if [[ ! $rrepo ]]; then echo "$0: repo not set in cosmos.conf and no git remote named '${_remote}' found" exit 1 fi if [ ! -d "$cmd_fqdn" ]; then cp -pr default "$cmd_fqdn" git add "$cmd_fqdn" git commit -m "$cmd_fqdn added" "$cmd_fqdn" ./bump-tag fi if [ "$cmd_do_bootstrap" = "yes" ]; then cosmos_deb=$(find apt/ -maxdepth 1 -name 'cosmos_*.deb' | sort -V | tail -1) scp $proxyjump "$cosmos_deb" apt/bootstrap-cosmos.sh root@"$cmd_hostname": ssh root@"$cmd_hostname" $proxyjump ./bootstrap-cosmos.sh "$cmd_fqdn" "$rrepo" "$rtag" ssh root@"$cmd_hostname" $proxyjump cosmos update ssh root@"$cmd_hostname" $proxyjump cosmos apply fi