こんにちは、さとはるです。
今回は Azure上でPower Shell スクリプトを実行させることができる、 Azure Automation の Power Shell Runbookをご紹介します!
Azure Automation の Power Shell Runbookとは?
単純にAzure 上でPower Shell スクリプトを実行するだけなら Azure Cloud Shellがありますが、そちらは本当にShellをWeb上で実行するための環境なので、手動で操作するのが前提に思えます。
一方Runbookは豊富な呼び出し方法を使って予め用意しておいたスクリプトを繰り返し実行することに特化しています。
WebhookやAPIが用意されているのでどこからでも呼び出せると言っても過言ではないですが、Azure アラートに反応してキックできるのは嬉しいですね。
早速使ってみましょう!
流れ
- Automation アカウントを作成
- Runbookを作成
- 実行!
1. Automation アカウントを作成
Azure Portalで「Automation」と検索してリソースを作成します。
名前やリージョンなどは任意の値を入力し、その他の項目は初期値で作成します。
初期値の場合は[ID]に[システム割り当て済]が設定されることを覚えておきましょう。
2. Runbookを作成
左のブレードから[プロセスオートメーション]=>[Runbook]と開きます。
Automation アカウントを作った段階でチュートリアルRunbookがあるので参考にしてもいいかもしれません。
新規に追加したい場合は上部の[Runbookの作成]をクリックします。
Runbookの[名前]と[説明]は任意のものを入力してください。
[Runbookの種類]は[PowerShell],[ランタイムバージョン]は[5.1]を選択します。
作成に成功するとPower Shellのスクリプトを入力できる画面が開きます。
この画面は後からも開けるので安心してください。
あとは自由にPower Shellスクリプトを作成するだけです。
画面左のコマンドレットにはPowerShellコマンドのテンプレートが入っているので、活用してもよいと思います。
今回は例として実行時の引数を名前とするリソースグループを作成するスクリプトを作成してみましょう。
以下に全文を載せておきます。
Param
(
[Parameter (Mandatory= $true)]
[String] $RgName = 'rg-default-001'
)
try
{
"Logging in to Azure..."
Connect-AzAccount -Identity
}
catch {
Write-Error -Message $_.Exception
throw $_.Exception
}
New-AzResourceGroup `
-Name $RgName `
-Location 'Japaneast'
Connect-AzAccount -Identity で接続されるAzure のアカウントはデフォルトでは[システム割り当て済]のマネージドIDになります。
こいつに必要な権限を振っておきましょう。
Automationアカウントに戻り、左のブレードから[ID]=>[システム割り当て済]=>[Azure ロールの割り当て]をクリックします。
あとはよくあるAADの権限設定なので割愛します。
3. 実行!
Runbookの編集画面に戻り、上部の[テストウィンドウ]をクリックします。
するとRunbookのテスト画面になるので、パラメータを入力し[開始]をクリックします。
しばらく待つと、無事リソースグループが作成されていることが確認できます。
ここまで確認ができたら[公開]をクリックして作成済のRunbookを公開しておきましょう。
公開が無事に完了すると色々な所から実行できるようになります。
今回は例としてAzure Portalから実行してみます。
該当のRunbookのトップページで[実行]をクリックし、必要なパラメータを入力して[OK]をクリックするだけです。
先ほどのテストと合わせて二つのRGが作成されていることが確認できます。
まとめ
Azure Automation の PowerShell Runbookを使うことで、Power Shellを使った操作をシステムに組み込むことができます。
azureの操作に関してもマネージドIDを使ってロール管理できるので諸々都合が良いですね。
完全に余談ですが、Microsoft の SaaS である Power Platform に Power Automate というものがありますが、本記事で扱った Azure Automation とは全く関係がありません。
本記事が少しでも誰かの手助けになれば幸いです。