37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/usr/bin/env bash
							 | 
						||
| 
								 | 
							
								set -euo pipefail
							 | 
						||
| 
								 | 
							
								set -x
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								image="${1}"
							 | 
						||
| 
								 | 
							
								location="westus2"
							 | 
						||
| 
								 | 
							
								group="nixos-test-vm"
							 | 
						||
| 
								 | 
							
								vm_size="Standard_D2s_v3";  os_size=42;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# ensure group
							 | 
						||
| 
								 | 
							
								az group create --location "westus2" --name "${group}"
							 | 
						||
| 
								 | 
							
								group_id="$(az group show --name "${group}" -o tsv --query "[id]")"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# (optional) identity
							 | 
						||
| 
								 | 
							
								if ! az identity show -n "${group}-identity" -g "${group}" &>/dev/stderr; then
							 | 
						||
| 
								 | 
							
								  az identity create --name "${group}-identity" --resource-group "${group}"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# (optional) role assignment, to the resource group, bad but not really great alternatives
							 | 
						||
| 
								 | 
							
								identity_id="$(az identity show --name "${group}-identity" --resource-group "${group}" -o tsv --query "[id]")"
							 | 
						||
| 
								 | 
							
								principal_id="$(az identity show --name "${group}-identity" --resource-group "${group}" -o tsv --query "[principalId]")"
							 | 
						||
| 
								 | 
							
								until az role assignment create --assignee "${principal_id}" --role "Owner" --scope "${group_id}"; do sleep 1; done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# boot vm
							 | 
						||
| 
								 | 
							
								az vm create \
							 | 
						||
| 
								 | 
							
								  --name "${group}-vm" \
							 | 
						||
| 
								 | 
							
								  --resource-group "${group}" \
							 | 
						||
| 
								 | 
							
								  --assign-identity "${identity_id}" \
							 | 
						||
| 
								 | 
							
								  --size "${vm_size}" \
							 | 
						||
| 
								 | 
							
								  --os-disk-size-gb "${os_size}" \
							 | 
						||
| 
								 | 
							
								  --image "${image}" \
							 | 
						||
| 
								 | 
							
								  --admin-username "${USER}" \
							 | 
						||
| 
								 | 
							
								  --location "westus2" \
							 | 
						||
| 
								 | 
							
								  --storage-sku "Premium_LRS" \
							 | 
						||
| 
								 | 
							
								  --ssh-key-values "$(ssh-add -L)"
							 | 
						||
| 
								 | 
							
								
							 |