|
|
|
|
|
|
|
# eqx-cluster-create
|
|
|
|
#
|
|
|
|
# Create a cluster of bare metal on Equinix.
|
|
|
|
# Generates random project name if none is given.
|
|
|
|
# Using existing names will cause issues!
|
|
|
|
#
|
|
|
|
# Usage:
|
|
|
|
# eqx-cluster-create [project name]
|
|
|
|
# Example:
|
|
|
|
# eqx-cluster-create foocluster
|
|
|
|
# eqx-cluster-create
|
|
|
|
#
|
|
|
|
# XXX check name isn't in use.
|
|
|
|
|
|
|
|
#set -x
|
|
|
|
|
|
|
|
# Set static variables here
|
|
|
|
EQXFACILITY="da11"
|
|
|
|
EQXOS="debian_10"
|
|
|
|
EQXPLAN="c3.small.x86"
|
|
|
|
EQXTAGS="cluster"
|
|
|
|
EQXSPOTOVER=".02"
|
|
|
|
|
|
|
|
# Probably leave these variables alone
|
|
|
|
# Set max price at current spot plus EQXSPOTOVER from above
|
|
|
|
EQXSPOT="`eqx-market-spot-prices`"
|
|
|
|
EQXSPOTMAX=`echo "$EQXSPOT + $EQXSPOTOVER" | bc -l | xargs printf "%1.2f"`
|
|
|
|
EQXPROJECT="$1"
|
|
|
|
if [[ $1 == "" ]]
|
|
|
|
then EQXPROJECT=`eqx-create-project`
|
|
|
|
else eqx-create-project "$EQXPROJECT"
|
|
|
|
fi
|
|
|
|
|
|
|
|
EQXHOSTNAME=`dd bs=12 count=1 if=/dev/random 2>/dev/null | base64 | tr [:upper:] [:lower:] | tr -dc [:alpha:]`
|
|
|
|
EQXPROJECTID=`eqx-get-project-uuid $EQXPROJECT`
|
|
|
|
|
|
|
|
echo "Spot: $EQXSPOT"
|
|
|
|
echo "Spot Max: $EQXSPOTMAX"
|
|
|
|
echo "Project: $EQXPROJECT"
|
|
|
|
echo "ProjectID: $EQXPROJECTID"
|
|
|
|
echo "Facility: $EQXFACILITY"
|
|
|
|
echo "Plan: $EQXPLAN"
|
|
|
|
echo "Hostname: $EQXHOSTNAME"
|
|
|
|
echo "OS: $EQXOS"
|
|
|
|
echo "Tag: $EQXTAGS"
|
|
|
|
|
|
|
|
packet device create \
|
|
|
|
--plan "$EQXPLAN" \
|
|
|
|
--spot-instance \
|
|
|
|
--spot-price-max="$EQXSPOTMAX" \
|
|
|
|
--project-id "$EQXPROJECTID" \
|
|
|
|
--facility "$EQXFACILITY" \
|
|
|
|
--hostname "$EQXHOSTNAME" \
|
|
|
|
--operating-system "$EQXOS" \
|
|
|
|
--tags "$EQXTAGS"
|
|
|
|
|
|
|
|
exit
|
|
|
|
-c, --customdata string Custom data
|
|
|
|
-r, --hardware-reservation-id string UUID of the hardware reservation
|
|
|
|
-i, --ipxe-script-url string URL to the iPXE script
|
|
|
|
-v, --public-ipv4-subnet-size int Size of the public IPv4 subnet
|
|
|
|
-T, --termination-time string Device termination time: --termination-time="15:04:05"
|
|
|
|
-u, --userdata string Userdata for device initialization (can not be used with --userdata-file)
|
|
|
|
--userdata-file string Path to a userdata file for device initialization (can not be used with --userdata)
|
|
|
|
-a, --always-pxe
|
|
|
|
-b, --billing-cycle string Billing cycle (default "hourly")
|
|
|
|
|