#!/bin/bash cmd_hostname="" cmd_do_bootstrap="no" cmd_fqdn="" cmd_prepare="" function usage() { echo "Usage: $0 [-h] [-b] [-n ] [-p ] [-r debian|ubuntu] [--] []" echo " -h show help" echo " -b bootstrap (using ssh)" echo " -n specify FQDN (if not the same as )" echo " -p specify proxyjump host (used for bootstrap)" echo " -r run prepare-iaas script (implies -b), supports debian and ubuntu" echo "" echo " can be an IP number, or something that resolves to one" } while getopts "bhn:p:r:" this; do case "${this}" in h) usage; exit 0;; b) cmd_do_bootstrap="yes" ;; n) cmd_fqdn="${OPTARG}" ;; p) cmd_proxy="${OPTARG}" ;; r) cmd_prepare="${OPTARG}" ; cmd_do_bootstrap="yes" ;; *) 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 case "$cmd_prepare" in ""| "debian" | "ubuntu" ) ;; # valid value *) echo "$0: don't know how to prepare '$cmd_prepare', only 'debian' and 'ubuntu' supported" usage exit 1;; esac 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 echo "Bootstrapping $cmd_hostname" if [ -n "$cmd_prepare" ]; then if ! ./prepare-iaas-$cmd_prepare $cmd_hostname $cmd_proxy ; then echo "Failed to prepare $cmd_prepare host, check that the setup is correct" echo "Aborting" exit 1 fi fi 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