この Cloud Shell PowerShell スクリプトは、変数 $resourceGroup、$vm、$size をそれぞれリソース グループ名、VM 名、必要な VM サイズを指定して初期化します。 次に、Get-AzVM コマンドレットを使って Azure から VM オブジェクトを取得します。 このスクリプトを使って、VM のハードウェア プロファイルの VmSize プロパティを目的のサイズに変更します。 最後に、Update-AzVM コマンドレットを使って、これらの変更を Azure の VM に適用します。
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
# Import the Azure module
Import-Module Az
# Login to your Azure account
Connect-AzAccount
# Set variables
$resourceGroup = 'myResourceGroup'
$vmName = 'myVM'
$size = 'Standard_DS3_v2'
# Select the subscription
Select-AzSubscription -SubscriptionId '<subscriptionID>'
# Get the VM
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
# Change the VM size
$vm.HardwareProfile.VmSize = $size
# Update the VM
Update-AzVM -ResourceGroupName $resourceGroup -VM $vm
警告
VM の割り当てを解除すると、VM に割り当てられているすべての動的 IP アドレスも解放されます。 OS とデータ ディスクには影響しません。
運用 VM のサイズを変更する場合は、Azure の容量予約を使用して、リージョンでコンピューティング容量を予約することを検討してください。
PowerShell を使用して可用性セット内の VM のサイズを変更する
現在 VM をホストしているハードウェア クラスターで可用性セット内の VM の新しいサイズを使用できない場合、可用性セット内のすべての VM の割り当てを解除して、VM のサイズを変更する必要があります。 また、1 つの VM のサイズを変更した後、可用性セット内の他の VM のサイズを更新する必要がある場合もあります。 可用性セット内の VM のサイズを変更するには、以下のスクリプトを実行します。 $resourceGroup、$vmName、$newVmSize、および $availabilitySetName の値を独自の値に置き換えることができます。
# Set variables
$resourceGroup = "myResourceGroup"
$vmName = "myVM"
$newVmSize = "<newVmSize>"
$availabilitySetName = "<availabilitySetName>"
# Check if the desired VM size is available
$availableSizes = Get-AzVMSize `
-ResourceGroupName $resourceGroup `
-VMName $vmName |
Select-Object -ExpandProperty Name
if ($availableSizes -notcontains $newVmSize) {
# Deallocate all VMs in the availability set
$as = Get-AzAvailabilitySet `
-ResourceGroupName $resourceGroup `
-Name $availabilitySetName
$virtualMachines = $as.VirtualMachinesReferences | Get-AzResource | Get-AzVM
$virtualMachines | Stop-AzVM -Force -NoWait
# Resize and restart the VMs in the availability set
$virtualMachines | Foreach-Object { $_.HardwareProfile.VmSize = $newVmSize }
$virtualMachines | Update-AzVM
$virtualMachines | Start-AzVM
exit
}
# Resize the VM
$vm = Get-AzVM `
-ResourceGroupName $resourceGroup `
-VMName $vmName
$vm.HardwareProfile.VmSize = $newVmSize
Update-AzVM `
-VM $vm `
-ResourceGroupName $resourceGroup
このスクリプトでは、変数 $resourceGroup、$vmName、$newVmSize、および $availabilitySetName を設定します。 次に、Get-AzVMSize を使用して目的の VM サイズが使用可能かどうかを確認し、出力に目的のサイズが含まれているかどうかを確認します。 目的のサイズが使用できない場合、スクリプトで可用性セット内のすべての VM の割り当てを解除し、サイズを変更して、再起動します。 目的のサイズが使用可能な場合は、スクリプトで VM のサイズが変更されます。
以下のスクリプトでは、サイズを変更する前に目的の VM サイズが使用可能かどうかを確認します。 目的のサイズが使用できない場合、スクリプトはエラー メッセージを表示して終了します。 目的のサイズが使用可能な場合、スクリプトは VM の割り当てを解除し、サイズを変更して、再起動します。 resourceGroup、vm、および size の値を独自の値に置き換えることができます。
# Set variables
resourceGroup=myResourceGroup
vm=myVM
size=Standard_DS3_v2
# Check if the desired VM size is available
if ! az vm list-vm-resize-options --resource-group $resourceGroup --name $vm --query "[].name" | grep -q $size; then
echo "The desired VM size is not available."
exit 1
fi
# Deallocate the VM
az vm deallocate --resource-group $resourceGroup --name $vm
# Resize the VM
az vm resize --resource-group $resourceGroup --name $vm --size $size
# Start the VM
az vm start --resource-group $resourceGroup --name $vm
警告
VM の割り当てを解除すると、VM に割り当てられているすべての動的 IP アドレスも解放されます。 OS とデータ ディスクには影響しません。
運用 VM のサイズを変更する場合は、Azure の容量予約を使用して、リージョンでコンピューティング容量を予約することを検討してください。
Azure CLI を使用して可用性セット内の VM のサイズを変更します。
以下のスクリプトでは、変数 resourceGroup、vm、および size を設定します。 次に、az vm list-vm-resize-options を使用して目的の VM サイズが使用可能かどうかを確認し、出力に目的のサイズが含まれているかどうかを確認します。 目的のサイズが使用できない場合、スクリプトはエラー メッセージを表示して終了します。 目的のサイズが使用可能な場合、スクリプトは VM の割り当てを解除し、サイズを変更して、再起動します。
# Set variables
resourceGroup="myResourceGroup"
vmName="myVM"
newVmSize="<newVmSize>"
availabilitySetName="<availabilitySetName>"
# Check if the desired VM size is available
availableSizes=$(az vm list-vm-resize-options \
--resource-group $resourceGroup \
--name $vmName \
--query "[].name" \
--output tsv)
if [[ ! $availableSizes =~ $newVmSize ]]; then
# Deallocate all VMs in the availability set
vmIds=$(az vmss list-instances \
--resource-group $resourceGroup \
--name $availabilitySetName \
--query "[].instanceId" \
--output tsv)
az vm deallocate \
--ids $vmIds \
--no-wait
# Resize and restart the VMs in the availability set
az vmss update \
--resource-group $resourceGroup \
--name $availabilitySetName \
--set virtualMachineProfile.hardwareProfile.vmSize=$newVmSize
az vmss start \
--resource-group $resourceGroup \
--name $availabilitySetName \
--instance-ids $vmIds
exit
fi
# Resize the VM
az vm resize \
--resource-group $resourceGroup \
--name $vmName \
--size $newVmSize
Terraform コードで VM のサイズを変更するには、azurerm_linux_virtual_machine または azurerm_windows_virtual_machine リソース ブロックの size パラメーターを目的のサイズに変更し、terraform plan -out main.tfplan を実行して、変更する予定の VM サイズを確認します。 次に、terraform apply main.tfplan を実行して変更を適用し、VM のサイズを変更します。