36 lines
1.2 KiB
Bash
Executable file
36 lines
1.2 KiB
Bash
Executable file
#!/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)"
|
|
|