Azure VMの状態をチェックし、停止していたら起動させるAutomationスクリプト
誤ってAzure VMを停止した場合でも、常に起動状態にしておくためのAutomationスクリプトを作りました。
Azure Automationで15分置きに対象VMの状態チェックを行い、停止していれば起動させるというシンプルなものです。
Azure Automationアカウント作成
Runbook作成
ここに以下スクリプトを貼り付けます。
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 ."
}
一度動作確認しておきましょう。別途停止状態のVMを準備しておきます。
このスクリプトでは対象VMのリソースグループとVM名をパラメータとして渡します。パラメータ入力して、[開始]を選択してください。
実際に停止中だったVMが起動されているはずです。起動状態でもテストしてみて問題ないか確認しておきます。
スケジュール作成
- 今回は15分置きに実行することにします。Automationスケジュールは最短1時間単位での実行となるため、15分ずらして4つスケジューラーを作成していきます。
以下のように指定します。ポイントは00分に実行されるということです。これによってこのスケジュールは、1:00 2:00 3:00と毎時00分に実行してくれるものになります。
実行確認
- あとは時間がきたら問題なく動作するか確認すれば完了です。
Automation実行アカウント証明書期限切れチェック
- Automationアカウントを作るとAzure ADにサービスプリンシパルが作成されます。このサービスプリンシパルは証明書を使った認証方式になっており、1年で証明書が切れてRunbookの実行がエラーになってしまいます。
-
Azure Automationアカウントの証明書期限が切れる前にメール/Slack通知する というやり方を以前書いてますので参考ください。
参考にさせて頂いた記事
ここに以下スクリプトを貼り付けます。
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 ."
}
一度動作確認しておきましょう。別途停止状態のVMを準備しておきます。
このスクリプトでは対象VMのリソースグループとVM名をパラメータとして渡します。パラメータ入力して、[開始]を選択してください。
実際に停止中だったVMが起動されているはずです。起動状態でもテストしてみて問題ないか確認しておきます。
スケジュール作成
- 今回は15分置きに実行することにします。Automationスケジュールは最短1時間単位での実行となるため、15分ずらして4つスケジューラーを作成していきます。
以下のように指定します。ポイントは00分に実行されるということです。これによってこのスケジュールは、1:00 2:00 3:00と毎時00分に実行してくれるものになります。
実行確認
- あとは時間がきたら問題なく動作するか確認すれば完了です。
Automation実行アカウント証明書期限切れチェック
- Automationアカウントを作るとAzure ADにサービスプリンシパルが作成されます。このサービスプリンシパルは証明書を使った認証方式になっており、1年で証明書が切れてRunbookの実行がエラーになってしまいます。
-
Azure Automationアカウントの証明書期限が切れる前にメール/Slack通知する というやり方を以前書いてますので参考ください。
参考にさせて頂いた記事
以下のように指定します。ポイントは00分に実行されるということです。これによってこのスケジュールは、1:00 2:00 3:00と毎時00分に実行してくれるものになります。
- あとは時間がきたら問題なく動作するか確認すれば完了です。
Automation実行アカウント証明書期限切れチェック
- Automationアカウントを作るとAzure ADにサービスプリンシパルが作成されます。このサービスプリンシパルは証明書を使った認証方式になっており、1年で証明書が切れてRunbookの実行がエラーになってしまいます。
-
Azure Automationアカウントの証明書期限が切れる前にメール/Slack通知する というやり方を以前書いてますので参考ください。
参考にさせて頂いた記事
Author And Source
この問題について(Azure VMの状態をチェックし、停止していたら起動させるAutomationスクリプト), 我々は、より多くの情報をここで見つけました https://qiita.com/shingo_kawahara/items/2e1667a58f69753df333著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .