56 lines
1.5 KiB
Bash
56 lines
1.5 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
set -euo pipefail
|
||
|
set -x
|
||
|
|
||
|
attr="${1:-"azbasic"}"
|
||
|
|
||
|
nix-build ./examples/basic/image.nix --out-link "azure"
|
||
|
|
||
|
group="nixos-images"
|
||
|
location="westus2"
|
||
|
img_name="azure-image-todo-makethisbetter" # TODO: clean this up
|
||
|
img_file="$(readlink -f ./azure/disk.vhd)" # TODO: this doesn't feel great either
|
||
|
|
||
|
if ! az group show -n "${group}" &>/dev/null; then
|
||
|
az group create --name "${group}" --location "${location}"
|
||
|
fi
|
||
|
|
||
|
if ! az disk show -g "${group}" -n "${img_name}" &>/dev/null; then
|
||
|
bytes="$(stat -c %s ${img_file})"
|
||
|
size="30"
|
||
|
az disk create \
|
||
|
--resource-group "${group}" \
|
||
|
--name "${img_name}" \
|
||
|
--for-upload true --upload-size-bytes "${bytes}"
|
||
|
|
||
|
timeout=$(( 60 * 60 )) # disk access token timeout
|
||
|
sasurl="$(\
|
||
|
az disk grant-access \
|
||
|
--access-level Write \
|
||
|
--resource-group "${group}" \
|
||
|
--name "${img_name}" \
|
||
|
--duration-in-seconds ${timeout} \
|
||
|
| jq -r '.accessSas'
|
||
|
)"
|
||
|
|
||
|
azcopy copy "${img_file}" "${sasurl}" \
|
||
|
--blob-type PageBlob
|
||
|
|
||
|
az disk revoke-access \
|
||
|
--resource-group "${group}" \
|
||
|
--name "${img_name}"
|
||
|
fi
|
||
|
|
||
|
if ! az image show -g "${group}" -n "${img_name}" &>/dev/null; then
|
||
|
diskid="$(az disk show -g "${group}" -n "${img_name}" -o json | jq -r .id)"
|
||
|
|
||
|
az image create \
|
||
|
--resource-group "${group}" \
|
||
|
--name "${img_name}" \
|
||
|
--source "${diskid}" \
|
||
|
--os-type "linux" >/dev/null
|
||
|
fi
|
||
|
|
||
|
imageid="$(az image show -g "${group}" -n "${img_name}" -o json | jq -r .id)"
|
||
|
echo "${imageid}"
|