実行アカウント廃止に備えグラフィカルRunbookを修正してみた

はじめに

はじめまして、DXソリューション統括部の鈴木です。

 

さて、2023年9月30日にAzure Automation実行アカウントが廃止されることはご存じでしょうか?

廃止に伴いRunbookの認証方法を実行アカウントからマネージドIDに移行する必要があるのですが、その方法がマイクロソフト社の公式ドキュメントに記載されています。

実行アカウントからマネージド ID に移行する | Microsoft Learn

 

そこで、上記ドキュメント内の「マネージドIDを使用するようにグラフィカルRunbook編集する」を参考にグラフィカルRunbook「Start Azure V2 VMs」を編集してみましたので、本記事ではその手順をご紹介します。

(早速結論から申し上げますと、置き換えるコマンドの関係で「リソースグループ内全ての仮想マシン」を起動対象にすることはできませんでした。詳細は後ほど…)

 

なおRunbookの修正前に事前準備が必要となります。詳細は以下ドキュメント内「前提条件」をご確認ください。

実行アカウントからマネージド ID に移行する | Microsoft Learn

Start Azure V2 VMsの修正手順

それではグラフィカルRunbook「Start Azure V2 VMs」の修正手順をご紹介します。

修正にあたり、コマンド同士を繋ぐ矢印やコマンド自体の設定値を修正前のものに合わせる必要があるため、修正前の設定を忘れないよう別途参照用の「Start Azure V2 VMs」を用意しておくと便利です。

 

※今回使用する「Start Azure V2 VMs」は、実行アカウントを使用するコマンドを利用しているのもあり非推奨のRunbookとなっています。よって、実行アカウント廃止後も仮想マシンの起動・停止を行いたい場合には、①Start/Stop VMs V2の利用②PowerShell Runbookの作成 のいずれかを選択いただくのが良いかと思います。

Azure Automationで仮想マシンを起動・停止する方法については以下をご参照下さい。

Azure Automation で VM を起動・停止する方法 | Japan Azure Monitoring Support Blog (jpazmon-integ.github.io)

 

なお手順概要としては以下の四点となります。

①実行アカウントによる認証部分をマネージドIDによるものに修正

②他に実行アカウントが使用されているとコマンドを特定し、マネージドID版に修正

③コード・コマンド同士を矢印でつなぐ

④テスト

⑤実行アカウント削除・実行

①実行アカウントによる認証部分をマネージドIDによるものに修正

まずは赤枠の認証部分をマネージドID版に修正していきます。

実は枠内下のコマンドを選択すると名前が「Add-AzureRmAccount」となっているのですが、これは実行アカウントを使用するコマンドであるため修正が必要になります。

また、コマンドの「オプション」を選択するとパラメーターセットが「ServicePrincipalCertificate」となっているのですが、これも実行アカウントを使用する際に使われるものだそうです。

ということで、赤枠内の「Get Run As Connection」「Connect to Azure」コマンドを削除します。

削除したコマンドの代わりにコードを用意するため、左ペインの「Runbookの制御」ー「コード」ー「キャンバスに追加」を選択します。

「コード」がキャンバス内に現れるので、クリックし「コード」を選択します。

「コードエディター」のページが表示されたら、「PowerShellコード」内に以下のスクリプトを入力、「OK」をクリックしてページを閉じます。

try
{
    Write-Output (“Logging in to Azure…”)
    Connect-AzAccount -Identity
}
catch {
    Write-Error -Message $_.Exception
    throw $_.Exception
}

最後にコマンドのラベルを「Connect AzAccount」に修正したら、残りは規定値のままで認証部分は完了です。

 

②他に実行アカウントが使用されているコマンドを特定し、マネージドID版に修正

次に、認証部分以外で実行アカウントを使用しているコマンドを、マネージドID版に修正します。

認証部分だけ修正すれば解決!…と思いたいところですが、「Start Azure V2 VMs」は後続の処理を含めて実行アカウントを使用する「AzureRMモジュール」のコマンドで作成されています。

しかし、実行アカウントを使用する「AzureRMモジュール」のコマンドとマネージドIDを使用する「Azモジュール」のコマンドを同Runbook内で混在させることはできませんので、後続の処理で実行アカウントを使用しているコマンドをマネージドIDを使用するコマンドに置き換える必要があります。

 

では、後続の処理で「AzureRMモジュール」のコマンドを探してみましょう!

(探し方は①でご紹介したコマンドの名前で判断しましょう、名前に「Rm」が付いているのが目印になるかと思います)

 

結果…

殆どが「AzureRMモジュール」のコマンドでした!(コマンド名が「Write-Output」のもの以外全てでしたね)

 

ではコマンドを置き換えていきましょう。

 

コマンドは違えど手順自体は変わらないので、代表して①の置き換え手順をご説明します。

まず、代替となるコマンド「Get-AzVM」をキャンバスに追加します。

(②~④も同じコマンドとなります。代替コマンドについては、名前の「AzureRm」が「Az」になると思っていただければ良いのではと思います。)

左ペインにて「コマンドレット」ー「Az.Compute」ー「Get-AzVM」を見つけ出し、キャンバスに追加します。

追加された「Get-AzVM」を選択し、「ラベル」「説明」「例外をエラーに変換」を置き換え前のコマンドに合わせます。

※既にキャンバス内に存在するラベルを使用している旨のエラーが出ていますが、後々古い方を削除するので無視してOKです。

次にパラメーターの構成を揃えていきます。

「パラメーター」を選択し、「パラメーターセットを選択します」をクリックします。

すると選択できるパラメーターセットの一覧が表示されるため、置き換え前と同じ「GetVirtualMachineInResourceGroupParamSet」を選択します。

パラメーターセットの選択後、各パラメーターも置き換え前に揃え、「OK」をクリックします。

Runbookの編集画面に戻ったら、古い方のコマンドを削除し、新しいコマンドを古いコマンドがあった場所にこっそり配置します。

完了!

 

②~⑤についても同様に置き換えていきますが、以下注意点を記載します。

※②:このコマンドで選択されているパラメーターセット「ListVirtualMachineInResourceGroupParamSet」は、代替コマンドで選択することができません。また、他に選択できるパラメーターセットで補うこともできないため、「リソースグループ内全てのVMの起動」は実現不可となります。

※③:このコマンドではパラメーターセットが選択されていないため、代替コマンドにおいてもパラメーターセットの選択以降の処理は不要です。

※④:代替コマンドのパラメータの選択をする上で④の上に存在するコマンド「Merge VMs(ラベル名)」を繋ぐ必要があります。そのため「③コード・コマンド同士を矢印でつなぐ」の手順を参考に、両者のコマンドを繋いでおきましょう。

※⑤:使用コマンドが①~④と異なる「Start-AzureRmVM」であるため、代替コマンドは「Start-AzVM」を使用します。

※⑤:代替コマンドのパラメータの選択をする上で⑤の上に存在するコマンド「Get VM with Status(ラベル名)」を繋ぐ必要があります。そのため「③コード・コマンド同士を矢印でつなぐ」の手順を参考に、両者のコマンドを繋いでおきましょう。

 

③コード・コマンド同士を矢印でつなぐ

②を終えた時点でRunbookの編集画面のキャンバスは以下のようになっているかと思いますので、各コード・コマンドを繋いでいきます。

(赤枠のコマンドは期待通りの挙動にならないため、削除してもOKです)

まず、繋ぎたい片方のコマンドにカーソルを当てるとコマンド下部に白丸〇が表示されるので、それをクリックし動かすと矢印↓が出てきます。

そのまま繋ぐ対象のコマンドにカーソルを当て、両者のコマンドが青くなったらクリックをやめます。

すると両者のコマンドを矢印↓で繋ぐことができます。

コマンドを繋ぐことができたら、繋いでいる矢印↓を選択し、修正前のRunbookと同じ構成になるよう各設定値の選択や、コメント・条件式の入力(コピペ)を行います。

 

この作業を必要分繰り返したらRunbookの修正は完了です!

修正後のRunbookはこちら↓

④テストしてみる

ようやくRunbookの修正が終わりましたので、以下二点に対し期待通りに動くかテストをします。

①単一の仮想マシンの起動

②サブスクリプション内全ての仮想マシンの起動

※「単一のリソースグループ内の仮想マシンの起動」に関しては、該当コマンドが用意できないためテストしません。(仮に「Get-AzVM」コマンドを用意しテストの入力値にリソースグループ名のみを指定しても、エラーとなります)

 

まず、Runbook編集画面の「テストウィンドウ」を選択します。

テスト①から試していくので、「RESOURCEGROUPNAME」「VMNAME」に適当な値を入れ「開始」を選択し、実行完了を待ちます。

成功すると、以下のようなログが出力されます。

次にテスト②を試すのでパラメーターには何も入力せずに「開始」を選択し、実行完了を待ちます。

成功すると、以下のようなログが出力されます。

(先ほど起動させたsample1を停止し忘れたのでそこだけ「~ is already running.」となっています)

 

⑤実行アカウントを削除して実行してみる

テストが無事成功したら、いよいよ実行アカウントを削除し、ジョブを実行してみましょう!

「該当のAutomaionアカウント」ー「実行アカウント」ー「Azure実行アカウント」を選択し、「削除」をクリックして実行アカウントを削除します。

以下は削除後の画面です。

削除後、修正したRunbookのページに遷移し「開始」を選択、パラメーターに適当な値を入力し「OK」をクリックします。

ジョブが完了し、選択した仮想マシンが起動されていることを確認したら作業終了です!お疲れ様でした!

おわりに

かなりの長文となりましたが、最後までお付き合いいただきありがとうございました。

最後に、実行アカウントからマネージドIDへの移行に関するマイクロソフト社のブログ・FAQをご紹介いたしますので、ご興味のある方は是非ご覧ください。

実行アカウントからマネージド ID へ移行する方法及び FAQ | Japan Azure Monitoring Support Blog (jpazmon-integ.github.io)

マネージド ID への移行のAzure Automationに関する FAQ | Microsoft Learn

いいね (←参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルプロセス&テクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください