はじめに
- 「Azure Automation + 拡張機能ベース(V2)のHybrid Runbook Worker(以降、HRWと呼ぶ)」の構成において、その間にProxy環境を使用する場合のセットアップ手順は、 Azureドキュメント に記述がありますが、ドキュメント通りでは正しくセットアップできませんでした。
試行錯誤し、正しく動作できた手順を記載します。 - 前提条件
- Automationアカウント、ハイブリッド Worker グループ は作成済
- HRW
- Azure VM + Windows Server OS で構築済
- 拡張機能ベース(V2)を使用
- Firewall等で必要な通信は許可済
手順
-
(再セットアップの場合)
- Azure Portalから、[Automationアカウント]-[{HRWを使用するAutomationアカウント名}]-[ハイブリッド Worker グループ]-[{HRWグループ名}]-[{HRWのVM名}]を選択し、[削除]
※一覧から"HRWのVM名"が無くなることを確認する - HRWへリモートデスクトップ接続後、regeditを使用し、レジストリ [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HybridRunbookWorkerV2]の削除
※実施しなくても動作する場合がある。
- Azure Portalから、[Automationアカウント]-[{HRWを使用するAutomationアカウント名}]-[ハイブリッド Worker グループ]-[{HRWグループ名}]-[{HRWのVM名}]を選択し、[削除]
-
PowerShellから下記コマンドを実行
# Azureへ接続 Connect-AzAccount # 変数 #- サブスクリプションID $subscription="xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx" #- HRW VMのリソースグループ $rg = "aaaaa" #- HRW VMの場所 例:Japan East $location = "bbbbb" #- HRW VMのVM名 $hybridVm = "ccccc" #- HRWを使用するAutomationアカウント名 $ac = "ddddd" #- Proxyの情報 IPアドレス:Port 例:192.168.1.1:8080 $proxy = "eee.eee.eee.eee:fff" # 事前処理 #- Automation アカウントの詳細を取得するためのAPIエンドポイント $url="https://westcentralus.management.azure.com/subscriptions/${subscription}/resourceGroups/${rg}/providers/Microsoft.Automation/automationAccounts/${ac}?api-version-2021-06-22" #- Connect-AzAccountしたユーザのトークンの取得 $token = (Get-AzAccessToken).Token #- Automation アカウントの詳細を取得 $data = (Invoke-RestMethod -Uri $url -Method GET -Headers @[Authorization="Bearer $token"]) #- Automation アカウントの詳細からproperties.automationHybridServiceUrlの取得 # 補足) ドキュメントでは「"AutomationAccountURL" = "<registrationurl>/<subscription-id>"」と記述しているが、正しくは「"AutomationAccountURL" = "properties.automationHybridServiceUrl"」 $automationHybridServiceUrl = $data.properties.automationHybridServiceUrl #- 拡張機能の設定情報 # 補足) Proxy認証が無い場合は、"UserName"及び$protectedsettingsは削除する $settings = @{ "AutomationAccountURL" = $automationHybridServiceUrl; "ProxySettings" = @{ "ProxyServer" = $proxy; "UserName"="test"; } }; $protectedsettings = @{ "ProxyPassword" = "password"; }; # 拡張機能の設定 # 補足) Proxy認証が無い場合は、$protectedsettingsは削除する Set-AzVMExtension -ResourceGroupName $rs -Location $location -VMName $hybridVm -Name "HybridWorkerExtension" -Publisher "Microsoft.Azure.Automation.HybridWorker" -ExtensionType HybridWorkerForWindows -TypeHandlerVersion 0.1 -Settings $settings -ProtectedSettings $protectedSettings
本コマンドを実行すると"Specified machineld is not associated with automation account."エラーとなり失敗するが問題無し。
この時、HRWのレジストリ[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\HybridWorker\Parameters]-[Http Connection Proxy Uri]へProxy情報($proxy)が記録 -
Azure Portalから、[Virtual Machines]-[{HRWのVM名}] → [設定]-[拡張機能とアプリケーション] → [HybridWorkerExtension] → [アンインストール] の順にクリック
※一覧から"HybridWorkerExtension"が無くなることを確認する
※本手順を実施しないと、No.4にて追加候補として一覧に表示しない -
Azure Portalから、[Automationアカウント]-[{HRWを使用するAutomationアカウント名}]-[ハイブリッド Worker グループ]-[{HRWグループ名}]より、"HRWのVM名"を追加
※数秒後に一覧へ"HRWのVM名"が表示することを確認する。
※数分~数十分経過しても処理が完了しない場合は、通信タイムアウト(例:Proxy情報が誤っている)の可能性がある。その場合は、原因を特定/修正後に再度No.1から実行する。
設定が完了すると、下記の通りHRWのレジストリ内容が更新
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Azure\HybridWorker\Parameters]-[Http Connection Proxy Uri]からProxy情報が削除
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HybridRunbookWorkerV2]が作成
AutomationとHRW間で疎通が取れている場合は、No.4の画面にて"最終表示時刻"が表示する。但し、しばらく時間を要することがあるため、実際にジョブを実行し確認しても良い。
補足
No.1 → 4 → 2 の順番でも成功する場合がある