今回は、Azure Automation の Hybrid Runbook Worker v2 を試してみました
Hybrid Runbook Worker
Azure Automation には PowerShell や Python など (Runbook と呼ばれる単位で管理) を実行する機能があります
通常は Azure のコンピューティング リソースを使って処理を実行します
そのため、サーバー内で PowerShell などのスクリプトを実行することができません
Hybrid Runbook Worker は、Runbook をサーバー内で実行できるようにするものです
従来の V1 は Log Analytics エージェントを使った仕組みで提供されていました
V2 では拡張機能ベースでの提供に変更されているため、Log Analytics エージェントは不要です
この機能を使って、Azure VM と Azure Arc enabled-Server (対応サーバー) にトースト通知を出してみました
ざっくり手順
- Hybrid Runbook Worker の作成
- Runbook の作成
- Runbook の実行
- Automation Account
- Azure Arc enabled-Server (対応サーバー)
- Azure VM
については事前に作成済みとします
1. Hybrid Runbook Worker の作成
Azure Portal から Automation Account > ハイブリッド Worker グループ > [+ ハイブリッド Worker グループの作成] を選択します

適当な名前を付けて、マシンを追加し、作成します


ハイブリッド Worker グループというのは Runbook を実行するサーバーをグループ化したものです
以下の公開情報にある通り、このグループは負荷分散が目的です
今回は「各マシンにトースト通知を送信したい」です
同一グループにしてしまうと「負荷分散した結果、どれか1台だけでトースト通知を出す」ことになります
そのため、マシンごとにハイブリッド Worker グループを作成します
複数の Hybrid Runbook Worker を使用するハイブリッド worker グループは、複数の worker にジョブを割り当てることで、高可用性と負荷分散を実現するように設計されています。
Azure Automation Hybrid Runbook Worker の概要 | Microsoft Learn
↓ 同一グループで実行する場合のイメージ
graph LR
A[Automation Account] --> B((Hybrid Runbook Worker Group))
B -- いずれかで実行 --> C(Hybrid Runbook Worker 1)
B -- いずれかで実行 --> D(Hybrid Runbook Worker 2)
B -- いずれかで実行 --> E(Hybrid Runbook Worker 3)
↓ 各マシンで実行したい場合の構成
graph LR
A[Automation Account] --> B((Hybrid Runbook Worker Group1))
B -- いずれかで実行(1つだけなので確定) --> C(Hybrid Runbook Worker 1)
A --> D((Hybrid Runbook Worker Group2))
D -- いずれかで実行(1つだけなので確定) --> E(Hybrid Runbook Worker 2)
ということで、Azure VM 1台と Azure Arc enabled-Server 1台の Worker グループをそれぞれ作成しました



Automation Hybrid Runbook Worker V2 は拡張機能ベースなので、Azure VM, Azure Arc enabled-Server ともに拡張機能がインストールされています


2. Runbook の作成
プッシュ通知を送る Runbook (PowerShell スクリプト) を用意します
以下の構成で Runbook を 2 つ用意しました
graph TD;
A[トースト通知トリガー用 Runbook on Azure 基盤] --> B[トースト通知の共通 Runbook on Hybrid Runbook Worker Group1];
A --> C[トースト通知の共通 Runbook on Hybrid Runbook Worker Group2];
B --> E[Hybrid Runbook Worker 1 でトースト通知];
C --> F[Hybrid Runbook Worker 2 でトースト通知];
トースト通知トリガー用 Runbook は以下の PowerShell です
|
|
トースト通知用 Runbook は以下の PowerShell です
|
|
トースト通知についてはこちらを参照させていただきました
私PowerShellだけどあなたにトーストを届けたい(プログレスバー付) #Windows - Qiita
Runbook 内で Hybrid Runbook Worker として実行するため Start-AzAutomationRunbook を -RunOn 付きで実行しています
そのため Automation Account のマネージド ID には Automation オペレーター ロールをつけています

3. Runbook の実行
それでは実行してみます
様子を GIF 画像で置いておきます
trigger runbook を実行
→ その中で notification runbook が2回実行
→ Azure VM と Azure Arc enabled-Server でトースト通知が表示

まとめ
Automation の Hybrid Runbook Worker を初めて触りました
拡張機能だけで実行できるので、導入は簡単でした
Azure VM と Azure Arc enabled-Server の違いを特に意識することなく操作ができています
参考
- Azure Automation の概要 | Microsoft Learn
- Azure Automation Hybrid Runbook Worker の概要 | Microsoft Learn
- Azure Automation での Runbook の実行 | Microsoft Learn
- 私PowerShellだけどあなたにトーストを届けたい(プログレスバー付) #Windows - Qiita
- 拡張機能ベースの Windows または Linux ユーザー Hybrid Runbook Worker を Azure Automation にデプロイする | Microsoft Learn