#!/bin/bash set -ex cd "$(dirname "$0")" # This script is meant to be executed on the management machine. # it reaches out to an SSH endpoint and provisions that machine # to use LXD. DATA_PLANE_MACVLAN_INTERFACE= DISK_TO_USE= # override the cluster name. CLUSTER_NAME="${1:-}" if [ -z "$CLUSTER_NAME" ]; then echo "ERROR: The cluster name was not provided. Syntax is: 'ss-cluster CLUSTER_NAME SSH_HOST_FQDN'" echo " for example: 'ss-cluster dev clusterhost01.domain.tld" exit 1 fi #shellcheck disable=SC1091 source ../defaults.sh export CLUSTER_PATH="$CLUSTERS_DIR/$CLUSTER_NAME" CLUSTER_DEFINITION="$CLUSTER_PATH/cluster_definition" export CLUSTER_DEFINITION="$CLUSTER_DEFINITION" mkdir -p "$CLUSTER_PATH" if [ ! -f "$CLUSTER_DEFINITION" ]; then # stub out a cluster_definition. cat >"$CLUSTER_DEFINITION" </dev/null 2>&1; then if lxc profile list --format csv | grep -q "$BASE_IMAGE_VM_NAME"; then lxc profile delete "$BASE_IMAGE_VM_NAME" sleep 1 fi if lxc network list --format csv | grep -q lxdbr0; then lxc network delete lxdbr0 sleep 1 fi fi ssh -t "ubuntu@$FQDN" " set -e # install tool/dependencies sudo apt-get update && sudo apt-get upgrade -y && sudo apt install htop dnsutils nano -y # install lxd as a snap if it's not installed. if ! snap list | grep -q lxd; then sudo snap install lxd sleep 10 fi " # if the DATA_PLANE_MACVLAN_INTERFACE is not specified, then we 'll # just attach VMs to the network interface used for for the default route. if [ -z "$DATA_PLANE_MACVLAN_INTERFACE" ]; then DATA_PLANE_MACVLAN_INTERFACE="$(ssh -t ubuntu@"$FQDN" ip route | grep default | cut -d " " -f 5)" fi export DATA_PLANE_MACVLAN_INTERFACE="$DATA_PLANE_MACVLAN_INTERFACE" echo "DATA_PLANE_MACVLAN_INTERFACE: $DATA_PLANE_MACVLAN_INTERFACE" # run lxd init on the remote server. cat <