Azure Runbookの実行時間制限を試してみました

 

Runbookスケジュール実行させる場合、Runbookの障害で実行時間が遅延し予期せぬ時間帯に実行されるケースがあります。
予期せぬ時間帯にRunbookが実行される事象を防ぐためには、Rubbook内で実行時間を制限することが1つの対策となります。今回は下記サイトを参考に試してみました。

https://docs.microsoft.com/ja-jp/azure/automation/automation-runbook-execution

1 .Runbook実行時間を制限した場合のサンプル

今回は1つの例としてサーバ再起動のRunbookを作成してみました。9時から18時の間はRunbookが実行されないような設定にしています。

AddHours(9)で日本時間に合わせて、9時間追加してます。
$JST.Hour -lt 9で9時より前(8時59分以前)、$JST.Hour -gt 18で18時より後(18時01分以降)を指定しています。
8時59分時以前もしくは、18時01分以降なら実行という設定、つまり9時から18時の間は実行されないという設定が実現できます。

#Runbookサーバ再起動

#再起動対象の仮想マシンが属する、リソースグループ名
$rgName =“RG名”

#再起動する仮想マシン名
$vmName =“仮想マシン名”

# 認証
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Connect-AzureRmAccount -ServicePrincipal -Tenant $Conn.TenantID `
-ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

# 時間指定
  $JST = (Get-Date).AddHours(9)
        if(($JST.Hour -lt 9) -or ($JST.Hour -gt 18)){
         Write-Output(“Proceed”)

# 実行する処理
        Restart-AzureRmVM -ResourceGroupName $rgName -Name $vmName

    }
    else
    {
        Write-Output(“Don’t proceed”)
    }

.仮想マシンの起動停止については、Automationアカウントにソリューションがあります

Microsoftのサイトに記載の通り、仮想マシンの起動停止については、Automationアカウントにソリューションが別途用意されています。この編も試してみたい所です。

https://docs.microsoft.com/ja-jp/azure/automation/automation-solution-vm-management

Automationアカウントを作ったら、モジュールの更新をしましょう(AzureRMのお話)

 

Automationアカウントを新規作成した場合、モジュールは既定のバージョンになります。
この既定のバージョンが非常に古いバージョンになっています。その為RunBookが動かないケースがあります。

実際に、モジュールにAzureRM.Profile は存在していても、モジュールの既定のバージョン (1.0.3)であったため、Connect-AzureRmAccounが使えないケースがありました。

Automationアカウントを新規作成した場合には、モジュールを更新した方が良いかと思われます。

1.Automationアカウントのモジュール更新は更新ボタンではできない

Automationアカウントのメニューでモジュールを選択すると、モジュールリストとともに、モジュールの追加、更新ボタンが表示されます。
実際に更新ボタンをクリックすると、更新機能は廃止されましたというメッセージが表示されます。

2.Automationアカウントのモジュールの更新は、Update-AutomationAzureModulesForAccount を使って行う

モジュールの更新に関する詳細情報をクリックすると、以下のURLが表示されます。
https://docs.microsoft.com/ja-jp/azure/automation/automation-update-azure-modules
実際の更新は、RunBookにモジュールアップデートを行うPower Shellを作成して行います。

3.Automationアカウントのモジュールの更新方法

実際のモジュール更新は、RunBookにモジュールアップデートを行う、Power Shellを利用して行います。

1. 以下サイトで、”Update-AutomationAzureModulesForAccount.ps1″ をクリックする。
https://github.com/Microsoft/AzureAutomation-Account-Modules-Update

2. RAWボタンをクリックし、PowerShellスクリプトをコピーします。

3. テキストエディタ等にペーストし、”Update-AutomationAzureModulesForAccount.ps1″ として保存します。

4. Automation アカウントを開き、[Runbook] から [Runbook のインポート] をクリックします。

5. ファイルの選択にて先ほどの “Update-AutomationAzureModulesForAccount.ps1” を選択します。
Runbookの種類は、PowerShellを選択し、[作成] をクリックします。

6. インポート後、編集を選択し、編集画面にて、そのまま公開をクリックします。

7. 作成したRunbook にて [開始] をクリックします。

8. 実行すると、右側にRunBookの開始、パラメータが表示されます。
“RESOURCEGROUPNAME” に対象 Automation アカウントのリソースグループ名を入力します。
“AUTOMATIONACCOUNTNAME” に対象 Automation アカウント名を入力します。

9. 入力が終わったら、[OK] にて実行します。

10. ジョブが正常終了したら、 モジュールが更新されてます。(初回は結構時間がかかります。)

※なお、更新されないモジュールもあるそうです。