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
|
source "$here"/common.sh
|
||||||
|
|
||||||
prefix=testnet-dev-$(whoami | sed -e s/[^a-z0-9].*//)
|
prefix=testnet-dev-$(whoami | sed -e s/[^a-z0-9].*//)
|
||||||
validatorNodeCount=
|
validatorNodeCount=5
|
||||||
clientNodeCount=
|
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"
|
imageName="ubuntu-16-04-cuda-9-2-new"
|
||||||
internalNetwork=false
|
internalNetwork=false
|
||||||
|
@ -34,9 +40,9 @@ Manage a GCE-based testnet
|
||||||
(default: $prefix)
|
(default: $prefix)
|
||||||
|
|
||||||
create-specific options:
|
create-specific options:
|
||||||
-n number - Number of validator nodes
|
-n number - Number of validator nodes (default: $validatorNodeCount)
|
||||||
-c number - Number of client nodes
|
-c number - Number of client nodes (default: $clientNodeCount)
|
||||||
-P - Use GCE internal/private network
|
-P - Use GCE internal/private network (default: $internalNetwork)
|
||||||
-z - GCP Zone for the nodes (default: $zone)
|
-z - GCP Zone for the nodes (default: $zone)
|
||||||
-i imageName - Existing image on GCE (default: $imageName)
|
-i imageName - Existing image on GCE (default: $imageName)
|
||||||
|
|
||||||
|
@ -156,11 +162,21 @@ delete)
|
||||||
create)
|
create)
|
||||||
[[ -n $validatorNodeCount ]] || usage "Need number of nodes"
|
[[ -n $validatorNodeCount ]] || usage "Need number of nodes"
|
||||||
|
|
||||||
gcloud_CreateInstances "$prefix-leader" 1 "$zone" "$imageName"
|
echo "Network composition:"
|
||||||
gcloud_CreateInstances "$prefix-validator" "$validatorNodeCount" "$zone" "$imageName"
|
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
|
if [[ -n $clientNodeCount ]]; then
|
||||||
gcloud_CreateInstances "$prefix-client" "$clientNodeCount" "$zone" "$imageName"
|
gcloud_CreateInstances "$prefix-client" "$clientNodeCount" \
|
||||||
|
"$zone" "$imageName" "$clientMachineType" "$clientAccelerator"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
writeConfigFile
|
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.
|
# Creates one more identical instances.
|
||||||
#
|
#
|
||||||
|
@ -83,6 +83,9 @@ gcloud_ForEachInstance() {
|
||||||
# numNodes - number of instances to create
|
# numNodes - number of instances to create
|
||||||
# zone - zone to create the instances in
|
# zone - zone to create the instances in
|
||||||
# imageName - Disk image for the instances
|
# 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
|
# Tip: use gcloud_FindInstances to locate the instances once this function
|
||||||
# returns
|
# returns
|
||||||
|
@ -91,6 +94,8 @@ gcloud_CreateInstances() {
|
||||||
declare numNodes="$2"
|
declare numNodes="$2"
|
||||||
declare zone="$3"
|
declare zone="$3"
|
||||||
declare imageName="$4"
|
declare imageName="$4"
|
||||||
|
declare machineType="$5"
|
||||||
|
declare optionalAccelerator="$6"
|
||||||
|
|
||||||
declare nodes
|
declare nodes
|
||||||
if [[ $numNodes = 1 ]]; then
|
if [[ $numNodes = 1 ]]; then
|
||||||
|
@ -99,12 +104,20 @@ gcloud_CreateInstances() {
|
||||||
read -ra nodes <<<$(seq -f "${namePrefix}%g" 1 "$numNodes")
|
read -ra nodes <<<$(seq -f "${namePrefix}%g" 1 "$numNodes")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
declare -a args
|
||||||
|
args=(
|
||||||
|
"--zone=$zone"
|
||||||
|
"--tags=testnet"
|
||||||
|
"--image=$imageName"
|
||||||
|
"--machine-type=$machineType"
|
||||||
|
)
|
||||||
|
if [[ -n $optionalAccelerator ]]; then
|
||||||
|
args+=("--accelerator=$optionalAccelerator")
|
||||||
|
fi
|
||||||
|
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
gcloud beta compute instances create "${nodes[@]}" \
|
gcloud beta compute instances create "${nodes[@]}" "${args[@]}" \
|
||||||
--zone="$zone" \
|
|
||||||
--tags=testnet \
|
|
||||||
--image="$imageName"
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue