0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

指定したHOST名を一度にリサイズする

0
Posted at

はじめに

仕事で使いそうなもんでサクッと作った。

要件

  • 可用性セットでグルーピングされたVMに対してサイズ変更をするので、全部のVMを電源OFFにしてからリサイズを行う
  • ある程度VMの状態がわかるように都度、"HOST名","電源状態","VMサイズ"が確認できるようにしてる
  • 動き出したら止まらない、というのは困るので都度Enterキーを押すまで待機、って処理をはさみました
  • Azure VirtuhalMachineでの利用を前提にしてる

スクリプトはコチラ

# Define variables
$resource_group_name = "pro-nabehiro-001"
$vm_names = @("nbfr151v", "nbfr152v")
$vm_size = "Standard_B1ls"

# Define a function to get the VM data
function Get-VMData {
    param (
        [string]$vm_name,
        [string]$resource_group_name
    )

    $powerstate = az vm get-instance-view --name $vm_name --resource-group $resource_group_name --query "{host: name, powerstate: instanceView.statuses[1].displayStatus}" -o tsv
    $vm_name_size = az vm show --name $vm_name --resource-group $resource_group_name --query "{size: hardwareProfile.vmSize}" -o tsv
    $powerstate + "`t" + $vm_name_size
}

# Show VMs
foreach($vm_name in $vm_names) {
    Get-VMData -vm_name $vm_name -resource_group_name $resource_group_name
}

Read-Host "Press Enter to continue. next:stop vms"

# Stop VMs
Write-Host "Stop VMs"
$vm_ids = foreach ($vm_name in $vm_names) {
    az vm deallocate --name $vm_name --resource-group $resource_group_name --no-wait | Out-Null
    az vm show --name $vm_name --resource-group $resource_group_name --query 'id' -o tsv
}

az vm wait --ids $vm_ids --updated | Out-Null

# Show VMs
foreach($vm_name in $vm_names) {
    Get-VMData -vm_name $vm_name -resource_group_name $resource_group_name
}

Read-Host "Press Enter to continue. next:resize vms"

# Resize VMs
Write-Host "Resize VMs"
foreach($vm_name in $vm_names) {
    az vm resize --name $vm_name --resource-group $resource_group_name --size $vm_size --no-wait | Out-Null
}

az vm wait --ids $vm_ids --updated | Out-Null

# Show VMs
foreach($vm_name in $vm_names) {
    Get-VMData -vm_name $vm_name -resource_group_name $resource_group_name
}


Read-Host "Press Enter to continue. next:start vms"

# Start VMs
Write-Host "Start VMs"
foreach($vm_name in $vm_names) {
    az vm start --name $vm_name --resource-group $resource_group_name --no-wait | Out-Null
}

az vm wait --ids $vm_ids --updated | Out-Null

# Show VMs
foreach($vm_name in $vm_names) {
    Get-VMData -vm_name $vm_name -resource_group_name $resource_group_name
}

Write-Host "Finished!"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?