summary refs log tree commit diff
path: root/nixos/maintainers/scripts/azure-new/upload-image.sh
blob: 4f3da6778e891817da8403f42d3b8b69ce2b0cff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/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}"