#!/bin/bash set -e 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 # install dependencies. ssh "ubuntu@$FQDN" sudo apt-get update && sudo apt-get upgrade -y && sudo apt install htop dnsutils nano -y if ! ssh "ubuntu@$FQDN" snap list | grep -q lxd; then ssh "ubuntu@$FQDN" sudo snap install lxd --channel=5.10/stable 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 <