#!/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}"