2023-03-20
AWSをメインで利用しているエンジニアがAzure環境の構築をPowerShellで進める連載。
リソースグループの作成から仮想マシンを起動するまでを連載していく予定です。
第7回は、これから作成する仮想マシンで利用する、AWSでいうところのEBSに類似するサービス「ストレージアカウント」を作成します。
※ストレージアカウントについては、非管理ディスク(unManagedDisk)で構築してコストを下げる方法を利用します。
※ただし、非管理ディスクは2025/9/30までに管理ディスクに移行する必要があります。
https://learn.microsoft.com/ja-jp/azure/virtual-machines/unmanaged-disks-deprecation
番外編
前提:事前に「リソースグループ」が作成されていること。
# リソースグループ名を設定
$private:resourceGroupName = "rg001"
# ロケーションを設定
$private:location = "japaneast"
# タグを設定
$tags = @{"環境名"="ITC109"}
# 仮想マシン名を設定
$private:vmname = $private:resourceGroupName + "vm01"
# ###############################################################################################################################
## ストレージアカウントを作成
###############################################################################################################################
# ストレージアカウント名を設定
$private:storageAccountName = $private:vmname.ToLower() + "storage"
# 使用するストレージアカウントタイプを指定
$SkuName = "Standard_LRS"
$private:storageAccount = Get-AzStorageAccount -ResourceGroupName $private:resourceGroupName -Name $private:storageAccountName -ErrorAction Ignore
#ストレージアカウントの有無確認
if (-not $private:storageAccount) {
#ストレージアカウント一意制約確認
$private:chekStorageAccountName = Get-AzStorageAccountNameAvailability -Name $private:storageAccountName
if (-not $private:chekStorageAccountName) {
Write-Host "ストレージアカウント作成エラー(一意制約違反)" -ForegroundColor Red
}
try {
#ストレージアカウント作成
Write-Host ("$private:resourceGroupName の「ストレージアカウント」に $private:storageAccountName を作成中...")
$null = New-AzStorageAccount -Location $private:location -ResourceGroupName $private:resourceGroupName -Name $private:storageAccountName -Tag $tags -SkuName $SkuName -Kind StorageV2 -ErrorAction Stop -EnableHttpsTrafficOnly $True
Write-Host ("$private:resourceGroupName の「ストレージアカウント」に ${private:storageAccountName} を作成しました。")
Write-Host ""
} catch {
Write-Host "ストレージアカウント作成エラー" -ForegroundColor Red
Write-Error -Message $_.Exception
}
} else {
Write-Host ("$private:resourceGroupName の「ストレージアカウント」には、既に ${private:storageAccountName.ToLower()} が存在するため作成をスキップしました。") -ForegroundColor Yellow
Write-Host ""
}
###############################################################################################################################
Write-Host ""
ストレージアカウントには小文字の英数字しか指定できないため注意する。
$private:storageAccountName = $private:vmname.ToLower() + "storage"
Get-AzStorageAccount
で既に同名のリソースが存在しないか確認。
$private:storageAccount = Get-AzStorageAccount -ResourceGroupName $private:resourceGroupName -Name $private:storageAccountName -ErrorAction Ignore
if (-not $private:storageAccount) {
※リソースが存在しない場合は、ここに作成する処理を記述。
} else {
※リソースが存在する場合は、ここに作成しない処理を記述。
}
Get-AzStorageAccountNameAvailability
でストレージアカウント一意制約に該当しないか確認。
$private:chekStorageAccountName = Get-AzStorageAccountNameAvailability -Name $private:storageaccountname
if (-not $private:chekStorageAccountName) {
Write-Host "ストレージアカウント作成エラー(一意制約違反)" -ForegroundColor Red
}
New-AzStorageAccount
でストレージアカウントを作成。
New-AzStorageAccount -Location $private:location -ResourceGroupName $private:resourceGroupName -Name $private:storageAccountName -Tag $tags -SkuName $SkuName -Kind Storage -EnableHttpsTrafficOnly $False -ErrorAction Stop
-SkuName
オプション「パフォーマンス」について以下から指定。
-SkuName Standard_LRS
-Kind Storage
オプション「アカウントの種類」について以下から指定。
-Kind StorageV2
-EnableHttpsTrafficOnly
オプション「安全な転送が必須」について以下から指定。
-EnableHttpsTrafficOnly $True
try ~ catch
で例外が発生したときにエラーメッセージを表示。
try {
※リソースの作成の作成。
} catch {
※リソースの作成の作成に失敗。
Write-Error -Message $_.Exception
}
ストレージアカウントには大文字や記号を指定することはできない。
vmRG001sv01storage is not a valid storage account name.
Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only.
vmRG001sv01storage は有効なストレージ アカウント名ではありません。
ストレージ アカウントカウント名は 3 ~ 24 文字の長さで、数字と小文字のみを使用する必要があります。