create_vms.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/bash
  2. azure_config=azure_config.json
  3. # Make sure jq is installed
  4. command -v jq
  5. if [ $? != 0 ]; then
  6. echo "Missing dependency of jq, please 'apt-get install jq'"
  7. exit 1
  8. fi
  9. if [ ! -f ${azure_config} ]; then
  10. echo "Cannot find $azure_config"
  11. exit 1
  12. fi
  13. cat $azure_config
  14. num_vms=`cat ${azure_config} | jq .num_vms`
  15. if [ $num_vms == "null" ]; then echo 'missing num_vms in config'; exit 1; fi
  16. location=`cat ${azure_config} | jq .location | sed 's/"//g'`
  17. if [ $location == "null" ]; then echo 'missing location in config'; exit 1; fi
  18. azure_sku=`cat ${azure_config} | jq .azure_sku | sed 's/"//g'`
  19. if [ $azure_sku == "null" ]; then echo 'missing azure_sku in config'; exit 1; fi
  20. ssh_private_key=`cat ${azure_config} | jq .ssh_private_key | sed 's/"//g'`
  21. if [ $ssh_private_key == "null" ]; then echo 'missing ssh_private_key in config'; exit 1; fi
  22. ssh_key=${ssh_private_key}.pub
  23. if [ ! -f ${ssh_private_key} ]; then
  24. echo "Cannot find $ssh_private_key"
  25. exit 1
  26. fi
  27. if [ ! -f ${ssh_key} ]; then
  28. echo "Cannot find $ssh_key"
  29. exit 1
  30. fi
  31. resource_group=deepspeed_rg_$location
  32. az group create --name ${resource_group} --location $location
  33. base_vm_name=deepspeed
  34. vm_image="nvidia:ngc_azure_17_11:ngc_gpu_cloud_19_11_3:19.11.3"
  35. az vm image terms accept --urn ${vm_image}
  36. for i in `seq 0 $(( num_vms - 1))`; do
  37. vm_name=${base_vm_name}_$i
  38. echo "creating $vm_name"
  39. az vm create \
  40. --resource-group ${resource_group} \
  41. --name ${vm_name} \
  42. --image ${vm_image} \
  43. --admin-username deepspeed \
  44. --size ${azure_sku} \
  45. --ssh-key-values ${ssh_key}
  46. done