Azure Automation × Runbook によるVM自動停止
自分用にまとめたメモです。(画像無しです)
仕様として、AutoShutdownタグがfalseの場合は停止しません。
1. 前提条件
- Azure Automation Account が作成済みであること
- 対象VMが存在していること
- Automation Account に VM 操作権限(Contributor など)が付与されていること
2. Runbookの作成
2.1 Runbook作成
- Azure Portal → Automation Accounts を開く
- 対象Automation Accountを選択
- 「Runbooks」→「Create a runbook」
設定:
- Name:Stop-VM-Runbook
- Runbook type:PowerShell 7.2
- Description:Stop VM daily schedule
2.2 Runbookスクリプト
Connect-AzAccount -Identity
Set-AzContext -SubscriptionId (Get-AzSubscription | Select-Object -First 1).Id
# 意図しないサブスクリプションに切り替わらないために、SubscriptionIdはパラメータ化が推奨
# ===== VM =====
Get-AzVM | ForEach-Object {
$tag = $_.Tags["AutoShutdown"]
if ($tag -ne "false") {
Stop-AzVM -Name $_.Name `
-ResourceGroupName $_.ResourceGroupName `
-Force
}
}
※(再掲)仕様として、AutoShutdownタグがfalseの場合は停止しません
2.3 Runbookの保存・公開
- Runbookエディタで「保存」をクリック
- 「公開」をクリック
公開されていないRunbookはスケジュールに紐づけできない
3. スケジュール作成
3.1 スケジュール設定
- Azure Portal → Automation Account を開く
- 「Schedules」→「Add a schedule」
設定:
- Name:Stop-VM-Daily-20
- Recurrence:Recurring
- Frequency:Daily
- Time:20:00
- Time zone:Japan Standard Time
4. Runbookとスケジュールの紐付け
4.1 Link to schedule
- Runbook(Stop-VM-Runbook)を開く
- 「Link to schedule」をクリック
- 作成したスケジュールを選択
4.2 パラメータ設定
今回はなし(空欄)
5. 動作確認
5.1 手動テスト
Runbook → 「Start」
→ VMが停止するか確認
5.2 スケジュール確認
次回実行時間が20:00になっているか確認
6. 権限設定(重要)
Automation Account または Managed Identity に以下を付与:
- Virtual Machine Contributor(推奨)
- または Contributor
注意事項
本ブログに掲載している内容は、私個人の見解であり、
所属する組織の立場や戦略、意見を代表するものではありません。
あくまでエンジニアとしての経験や考えを発信していますので、ご了承ください。