LoginSignup
3
2

More than 3 years have passed since last update.

Azure VMの状態をチェックし、停止していたら起動させるAutomationスクリプト

Posted at

誤ってAzure VMを停止した場合でも、常に起動状態にしておくためのAutomationスクリプトを作りました。
Azure Automationで15分置きに対象VMの状態チェックを行い、停止していれば起動させるというシンプルなものです。

Azure Automationアカウント作成

  • Azureポータルより[+リソースの作成]を選択します。

    image.png

  • 検索バーに[Automation]と入力してEnter

    image.png

  • [作成]を選択します。

    image.png

  • Automationアカウント名やリージョンを選択します。

    image.png

  • Azure実行アカウントは[はい]を選択しておきます。これによりAzureリソース操作コマンド実行時に楽になりますが、証明書期限に注意が必要になります。後ほど書きます。

    image.png

  • Automationアカウントが作成され、概要画面が表示されればOKです。

    image.png

Runbook作成

  • Automation画面の左バーより[Runbook]を選択します。

    image.png

  • [+ Runbookの作成]を選択します。

    image.png

  • Runbook名や説明を入力します。Runbookの種類は[PowerShell]とします。

    image.png

  • PowerShellスクリプトの入力画面が表示されます。

    image.png

  • ここに以下スクリプトを貼り付けます。

Param(
    [string]$VMName,
    [string]$ResourceGroupName
)

$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationID $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

$VMState = Get-AzureRmVM -Name $VMName -ResourceGroupName $ResourceGroupName -Status
$VMPowerState = $VMState.Statuses[1].DisplayStatus

if (($VMPowerState -eq "VM deallocated") -or ($VMPowerState -eq "VM stopped"))
{
    Write-Output "$VMName Status is $VMPowerState ."
    Start-AzureRmVM -ResourceGroupName $ResourceGroupName -Name $VMName
} else {
    Write-Output "$VMName Status is $VMPowerState ."
}
  • [保存]します。

    image.png

  • 一度動作確認しておきましょう。別途停止状態のVMを準備しておきます。

  • [テストウィンドウ]を選択します。

    image.png

  • このスクリプトでは対象VMのリソースグループとVM名をパラメータとして渡します。パラメータ入力して、[開始]を選択してください。

    image.png

  • 「[VM Name] Status is [VM Status].」というメッセージが表示されていればOKです。

    image.png

  • 実際に停止中だったVMが起動されているはずです。起動状態でもテストしてみて問題ないか確認しておきます。

  • 元の画面に戻ってRunbookを[公開]します。

    image.png

スケジュール作成

  • 今回は15分置きに実行することにします。Automationスケジュールは最短1時間単位での実行となるため、15分ずらして4つスケジューラーを作成していきます。
  • Runbookが選択されたポータル画面で[スケジュール]を選択します。

    image.png

  • [+ スケジュールの追加]を選択します。

    image.png

  • [スケジュール]を選択します。

    image.png

  • 新しいスケジュールを作成します。

    image.png

  • 以下のように指定します。ポイントは00分に実行されるということです。これによってこのスケジュールは、1:00 2:00 3:00と毎時00分に実行してくれるものになります。

    image.png

  • 次に[パラメータと実行設定]を選択します。

    image.png

  • ここではテストのときに指定した対象VM情報を入力します。

    image.png

  • 毎時00分に実行されるスケジュールが作成されました。

    image.png

  • 同じ手順で15分、30分、45分に実行されるスケジュールも作っていきます。

    image.png

実行確認

  • あとは時間がきたら問題なく動作するか確認すれば完了です。

Automation実行アカウント証明書期限切れチェック

参考にさせて頂いた記事

AzureVMの電源状態一覧とそれをPowerShellスクリプトで取得する方法

3
2
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
3
2