Skip to content

Instantly share code, notes, and snippets.

@nilaydshah
Last active August 23, 2024 23:28
Show Gist options
  • Save nilaydshah/fd184deaff03c7e80bcbd1273a77453c to your computer and use it in GitHub Desktop.
Save nilaydshah/fd184deaff03c7e80bcbd1273a77453c to your computer and use it in GitHub Desktop.
# Create two resource groups.
# Create 10 storage accounts (5 in each resource group). Soft delete for containers enabled with 7 days.
# For each storage account, create 5 containers.
# Generate a random 1GB file.
# Upload the file to each container in all storage accounts.
# Delete all the containers.
# Delete random 1GB file.
# Pre-reqs perform az login
# az account set --subscription "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# review the variables and update them as needed
# fsutil is used which makes this script windows specific
# Variables
$resourceGroup1 = "ResourceGroup-01"
$resourceGroup2 = "ResourceGroup-02"
$location = "eastus"
$storageAccountPrefix = "mystorageacc"
$containerPrefix = "container"
$fileName = "random1GBfile.bin"
# Create resource groups
az group create --name $resourceGroup1 --location $location
az group create --name $resourceGroup2 --location $location
# Create a random 1GB file using fsutil
fsutil file createnew $fileName 1073741824
# Function to create storage accounts and containers
function Create-StorageAccountsAndContainers {
param (
[string]$resourceGroup,
[int]$startIndex
)
for ($i = $startIndex; $i -lt ($startIndex + 5); $i++) {
$storageAccountName = "${storageAccountPrefix}${i}"
# Create storage account with anonymous access restricted
az storage account create --name $storageAccountName --resource-group $resourceGroup --location $location --sku Standard_LRS --allow-blob-public-access false
# Enable soft delete for containers for 7 days
az storage account blob-service-properties update --account-name $storageAccountName --resource-group $resourceGroup --enable-container-delete-retention true --container-delete-retention-days 7
# Get storage account key
$accountKey = az storage account keys list --resource-group $resourceGroup --account-name $storageAccountName --query '[0].value' --output tsv
# Create containers and upload file
for ($j = 1; $j -le 5; $j++) {
$containerName = "${containerPrefix}${j}"
# Create container
az storage container create --name $containerName --account-name $storageAccountName --account-key $accountKey
# Upload file to container
az storage blob upload --container-name $containerName --file $fileName --name $fileName --account-name $storageAccountName --account-key $accountKey
}
}
}
# Function to delete all containers
function Delete-AllContainers {
param (
[string]$resourceGroup,
[int]$startIndex
)
for ($i = $startIndex; $i -lt ($startIndex + 5); $i++) {
$storageAccountName = "${storageAccountPrefix}${i}"
# Get storage account key
$accountKey = az storage account keys list --resource-group $resourceGroup --account-name $storageAccountName --query '[0].value' --output tsv
# Delete containers
for ($j = 1; $j -le 5; $j++) {
$containerName = "${containerPrefix}${j}"
# Delete container
az storage container delete --name $containerName --account-name $storageAccountName --account-key $accountKey
}
}
}
# Create storage accounts and containers in both resource groups
Create-StorageAccountsAndContainers -resourceGroup $resourceGroup1 -startIndex 1
Create-StorageAccountsAndContainers -resourceGroup $resourceGroup2 -startIndex 6
# Clean up the random file
Remove-Item $fileName
# Delete all containers
Delete-AllContainers -resourceGroup $resourceGroup1 -startIndex 1
Delete-AllContainers -resourceGroup $resourceGroup2 -startIndex 6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment