Last active
September 23, 2022 07:54
-
-
Save adamrushuk/3dabe2e45e1a6e0b29cc3d622476382a to your computer and use it in GitHub Desktop.
AKS Disk Detach Wait Scripts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# get disk for aks to check attachment state during disk expansion | |
# vars | |
$subscriptionName = "" | |
$aksClusterName = "" | |
$aksClusterResourceGroupName = "" | |
$pvcName = "" | |
# login | |
Connect-AzAccount -UseDeviceAuthentication | |
Get-AzContext | |
Set-AzContext -Subscription $subscriptionName | |
# get cluster and associated "node resource group" (where resources live) | |
$aksCluster = Get-AzAksCluster -Name $aksClusterName -ResourceGroupName $aksClusterResourceGroupName | |
$diskResourceGroupName = $aksCluster.NodeResourceGroup | |
# get disk associated with AKS PVC name | |
$aksDisk = Get-AzDisk -ResourceGroupName $diskResourceGroupName | Where-Object { $_.Tags['kubernetes.io-created-for-pvc-name'] -eq $pvcName } | |
# wait for disk state to detach | |
$timer = [Diagnostics.Stopwatch]::StartNew() | |
do { | |
$disk = Get-AzDisk -ResourceGroupName $diskResourceGroupName -DiskName $aksDisk.Name | |
$disk | Select-Object DiskState, DiskSizeGB, Name, @{L = "PvcName"; E = { $_.Tags['kubernetes.io-created-for-pvc-name'] } } | |
Start-Sleep -Seconds 10 | |
} while ($disk.DiskState -eq "Attached") | |
$timer.Stop() | |
Write-Host "Disk took [$($timer.Elapsed.Minutes)m$($timer.Elapsed.Seconds)s] to change states" | |
# full disk info | |
$disk | Select-Object DiskState, DiskSizeGB, Name, @{L = "PvcName"; E = { $_.Tags['kubernetes.io-created-for-pvc-name'] } } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Waits for an AKS disk to report "Unattached" | |
# vars | |
SUBSCRIPTION_NAME="" | |
AKS_CLUSTER_RESOURCEGROUP_NAME="" | |
AKS_CLUSTER_NAME="" | |
PVC_NAME="" | |
# login | |
az login | |
az account set --subscription "$SUBSCRIPTION_NAME" | |
# get cluster and associated "node resource group" (where resources live) | |
DISK_RESOURCEGROUP_NAME=$(az aks show --name "$AKS_CLUSTER_NAME" --resource-group "$AKS_CLUSTER_RESOURCEGROUP_NAME" --query "nodeResourceGroup" --output tsv) | |
# define reusable function | |
get_disk_info() { | |
az disk list --resource-group "$DISK_RESOURCEGROUP_NAME" --query "[?tags.\"kubernetes.io-created-for-pvc-name\" == '$PVC_NAME' ].{state:diskState, diskSizeGb:diskSizeGb, name:name, pvcname:tags.\"kubernetes.io-created-for-pvc-name\"}" --output table | |
} | |
# get disk associated with AKS PVC name | |
echo 'Waiting for disk to become "Unattached"...' | |
get_disk_info | |
# wait for disk state to detach | |
START_TIME=$SECONDS | |
while true; do | |
# get disk info | |
DISK_OUTPUT=$(get_disk_info) | |
# check disk state | |
if echo "$DISK_OUTPUT" | grep Attached; then | |
sleep 10 | |
elif echo "$DISK_OUTPUT" | grep Unattached; then | |
echo "Disk is now Unattached." | |
break | |
fi | |
done | |
ELAPSED_TIME=$(($SECONDS - $START_TIME)) | |
echo "Disk took [$(($ELAPSED_TIME / 60))m$(($ELAPSED_TIME % 60))s] to change states" | |
# final disk info | |
get_disk_info |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment