gce instance types are now configurable
This commit is contained in:
parent
8e39465700
commit
7e2b65374d
32
net/gce.sh
32
net/gce.sh
|
@ -7,8 +7,14 @@ source "$here"/../scripts/gcloud.sh
|
|||
source "$here"/common.sh
|
||||
|
||||
prefix=testnet-dev-$(whoami | sed -e s/[^a-z0-9].*//)
|
||||
validatorNodeCount=
|
||||
clientNodeCount=
|
||||
validatorNodeCount=5
|
||||
clientNodeCount=1
|
||||
leaderMachineType=n1-standard-1
|
||||
leaderAccelerator= # "count=4,type=nvidia-tesla-k80"
|
||||
validatorMachineType=$leaderMachineType
|
||||
validatorAccelerator=
|
||||
clientMachineType=$leaderMachineType
|
||||
clientAccelerator=
|
||||
|
||||
imageName="ubuntu-16-04-cuda-9-2-new"
|
||||
internalNetwork=false
|
||||
|
@ -34,9 +40,9 @@ Manage a GCE-based testnet
|
|||
(default: $prefix)
|
||||
|
||||
create-specific options:
|
||||
-n number - Number of validator nodes
|
||||
-c number - Number of client nodes
|
||||
-P - Use GCE internal/private network
|
||||
-n number - Number of validator nodes (default: $validatorNodeCount)
|
||||
-c number - Number of client nodes (default: $clientNodeCount)
|
||||
-P - Use GCE internal/private network (default: $internalNetwork)
|
||||
-z - GCP Zone for the nodes (default: $zone)
|
||||
-i imageName - Existing image on GCE (default: $imageName)
|
||||
|
||||
|
@ -156,11 +162,21 @@ delete)
|
|||
create)
|
||||
[[ -n $validatorNodeCount ]] || usage "Need number of nodes"
|
||||
|
||||
gcloud_CreateInstances "$prefix-leader" 1 "$zone" "$imageName"
|
||||
gcloud_CreateInstances "$prefix-validator" "$validatorNodeCount" "$zone" "$imageName"
|
||||
echo "Network composition:"
|
||||
echo "Leader = $leaderMachineType (GPU=${leaderAccelerator:-none})"
|
||||
echo "Validators = $validatorNodeCount x $validatorMachineType (GPU=${validatorAccelerator:-none})"
|
||||
echo "Client(s) = $clientNodeCount x $clientMachineType (GPU=${clientAccelerator:-none})"
|
||||
echo ==================================================================
|
||||
echo
|
||||
gcloud_CreateInstances "$prefix-leader" 1 \
|
||||
"$zone" "$imageName" "$leaderMachineType" "$leaderAccelerator"
|
||||
gcloud_CreateInstances "$prefix-validator" "$validatorNodeCount" \
|
||||
"$zone" "$imageName" "$validatorMachineType" "$validatorAccelerator"
|
||||
if [[ -n $clientNodeCount ]]; then
|
||||
gcloud_CreateInstances "$prefix-client" "$clientNodeCount" "$zone" "$imageName"
|
||||
gcloud_CreateInstances "$prefix-client" "$clientNodeCount" \
|
||||
"$zone" "$imageName" "$clientMachineType" "$clientAccelerator"
|
||||
fi
|
||||
|
||||
writeConfigFile
|
||||
;;
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ gcloud_ForEachInstance() {
|
|||
}
|
||||
|
||||
#
|
||||
# gcloud_CreateInstances [namePrefix] [numNodes] [zone] [imageName]
|
||||
# gcloud_CreateInstances [namePrefix] [numNodes] [zone] [imageName] [machineType] [accelerator]
|
||||
#
|
||||
# Creates one more identical instances.
|
||||
#
|
||||
|
@ -83,6 +83,9 @@ gcloud_ForEachInstance() {
|
|||
# numNodes - number of instances to create
|
||||
# zone - zone to create the instances in
|
||||
# imageName - Disk image for the instances
|
||||
# machineType - GCE machine type
|
||||
# accelerator - Optional accelerator to attach to the instance(s), see
|
||||
# eg, request 4 K80 GPUs with "count=4,type=nvidia-tesla-k80"
|
||||
#
|
||||
# Tip: use gcloud_FindInstances to locate the instances once this function
|
||||
# returns
|
||||
|
@ -91,6 +94,8 @@ gcloud_CreateInstances() {
|
|||
declare numNodes="$2"
|
||||
declare zone="$3"
|
||||
declare imageName="$4"
|
||||
declare machineType="$5"
|
||||
declare optionalAccelerator="$6"
|
||||
|
||||
declare nodes
|
||||
if [[ $numNodes = 1 ]]; then
|
||||
|
@ -99,12 +104,20 @@ gcloud_CreateInstances() {
|
|||
read -ra nodes <<<$(seq -f "${namePrefix}%g" 1 "$numNodes")
|
||||
fi
|
||||
|
||||
declare -a args
|
||||
args=(
|
||||
"--zone=$zone"
|
||||
"--tags=testnet"
|
||||
"--image=$imageName"
|
||||
"--machine-type=$machineType"
|
||||
)
|
||||
if [[ -n $optionalAccelerator ]]; then
|
||||
args+=("--accelerator=$optionalAccelerator")
|
||||
fi
|
||||
|
||||
(
|
||||
set -x
|
||||
gcloud beta compute instances create "${nodes[@]}" \
|
||||
--zone="$zone" \
|
||||
--tags=testnet \
|
||||
--image="$imageName"
|
||||
gcloud beta compute instances create "${nodes[@]}" "${args[@]}" \
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue