Last active
August 23, 2024 23:28
-
-
Save nilaydshah/fd184deaff03c7e80bcbd1273a77453c to your computer and use it in GitHub Desktop.
This file contains hidden or 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
# 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