お世話になっております、日商エレの佐藤です。ITプラットフォーム事業本部でコンピューティング系のプリセールスを担当しています。
今回はAzure Automationで仮想マシンの自動起動、自動停止をスケジューリングしてみたいと思います。使用しなくても仮想マシンを立ち上げたままですと、もちろん課金されますので平日夜間や休日は使用されない場合、Automation機能を活用してコスト低減が可能です。
Azure Automationとは、Azureサービスのひとつで、PowerShellベースのRunbookと言われるテンプレートを活用し様々なプロセス処理をスケジュールで自動化することができます。Runbookギャラリーと呼ばれるMicrosoftやコミュニティで開発されたRunbookが提供されていますので、今回はこちらをAzure Automationにインポートし活用してみたいと思います。

※画面データは2017/12/04 時点のものです。



Azure Automationで自動化できること

Azure Automationでは基本的にPowerShellで実行できることはすべて自動化できます。ここでご紹介する内容以外にもできることはたくさんありますので、是非挑戦をしてみてください。

Azure Automation

Azure Active Directoryにユーザー追加

(1)Azure Automationサービスを使用するためには、Azure Active Directoryでユーザー作成し共同管理者として設定を行う必要があります。[Azure Active Directory] - [すべてのユーザー] - [新しいユーザー]の順にクリックします。

Azure Active Directoryにユーザー追加

(2)ユーザーに関する情報を入力したら、[作成]ボタンをクリックします。
ユーザー名はxxxx@xxxxx.onmicrosoft.comになります。ユーザー名とパスワードを控えておきましょう。

ユーザー情報を入力

(3)作成が完了するとユーザーとして追加されます。

ユーザーの追加完了後画面

(4)作成したユーザーにサブスクリプションを紐付けます。
[その他のサービス] - 検索フィルターに[サブスクリプション]を入力 - [サブスクリプション]をクリックします。

検索フィルターでサブスクリプションを検索

(5)赤枠のサブスクリプション部分をクリックします。

サブスクリプションを選択

(6)[アクセス制御(IAM)] - [+追加] の順にクリックします。アクセス許可の追加にあるautomationユーザー(赤枠)をクリックし、下部の[保存]ボタンをクリックします。これにてユーザー追加は完了です。

サブスクリプションにユーザーを追加

Azure Automationアカウントの作成

(1)次にAzureポータルのトップに戻り、Azure Automationアカウントを作成していきます。
[その他のサービス] - 検索フィルターに[auto]を入力すると以下のようにAutomationアカウントが表示されますので、[Automation アカウント]をクリックします。

Azure Automationアカウント

(2)[+追加]をクリックすると右側のAutomationアカウントの追加が表示されますので、必要情報を入力したら下部の作成ボタンをクリックします。
ここでは、名前をne-automationとし、リソースグループは既存のTestVM-RGとしています。

Automationアカウントの追加で必要情報入力

(3)作成開始すると以下のようなオートメーションをデプロイ実行中のタイルが表示されます。

デプロイ実行中のタイル

(4)デプロイ完了すると作成したautomationアカウントの概要ページが表示されます。

Automationアカウントの概要ページ

Runbook作成

(1)PowerShellベースのRunbookを作成し、仮想マシンの自動起動を実行できるようにします。今回は、Runbookギャラリーにある自動起動用のグラフィックRunbookをインポートします

先の2.(4)概要から、下へスクロールすると[Runbook]がありますので、クリックします。
上部にある[ギャラリーを参照]をクリックします。

Runbookのインポート

(2)グラフィックRunbookのVM起動 PowerShellを使ってみたいと思います。「Start Azure V2 VMs」を選択します。このPowerShellの詳細を確認するとMicrosoftチームが作成しており、V2※のVMであれば動作すると記載されています。
※Azure仮想マシンにはデプロイモデルの違いをV1とV2で区分けしています。
V1:クラシックデプロイモデル
V2:Azure Resource Manager(ARM)デプロイモデル

グラフィックRunbookのVM起動PowerShell

(3)これがグラフィックRunbookです。PowerShellが苦手な方でもワークフローになっていますので視覚的に分かりやすいと思います。今回の手順ではPowerShellの変更は行いませんが、この機会に是非触れてみて下さい。上部の[インポート]をクリックすると右側にインポート画面が表示されます。今回、Runbookの名前はデフォルト表記のままとします。下部の[OK]ボタンをクリックします。

グラフィックRunbook

(4)Runbookのインポートが完了すると以下の画面が表示されます。
次にインポートしたRunbookでターゲット仮想マシンを自動起動できるように一部編集していきます。
[編集]ボタンをクリックします。

Runbookのインポート完了画面

(5)グラフィックRunbookの編集画面が表示されます。上部の[入力と出力]ボタンをクリックします。

グラフィックRunbook編集画面

(6)入力と出力画面が表示されます。本手順では以下のパラメーター値のみ変更していきます。
ResourceGroupName:既定値で「TestVM-RG」
VMName:既定値で「TestVM」
それでは入力と出力画面の[ResourceGroupName(String)]をクリックすると右側にRunbookの入力パラメーター画面が表示されます。既定値の[カスタム]ボタンをクリックするとカスタムの既定値の欄が表示されますので、[TestVM-RG]と入力し、[OK]ボタンをクリックします。同じ要領でVMNameもパラメーター値を入力し、入力と出力画面の下部にある[OK]ボタンをクリックします。

Runbookの入力パラメーター画面

(7)グラフィックRunbookの編集が完了しましたので、[保存]ボタンをクリックします。

グラフィックRunbookの編集を保存

(8)編集完了したバージョンのRunbookの発行を実施するため、[発行]ボタンをクリックします。確認メッセージが表示されますので、[はい]ボタンをクリックします。

Runbookの発行画面

(9)Runbookが正常に発行されていることを確認するには上部の[ne-automation-Runbook]をクリックするとRunbookの一覧が表示されます。対象のRunbookの編集状態が発行されていることを確認します。確認できたら、[StartAzureV2VM]をクリックします。

ne-automation-Runbook

(10)編集したRunbookの動作を確認するため、[テストウィンドウ]ボタンをクリックします。

Runbookの動作確認

(11)[開始]ボタンをクリックします。実行されるPowerShellをトレースしたい場合は下部のトレースレベルに応じて[Basic]または[詳細]ボタンをクリックします(各ボタンをクリックするとトレース対象の内容が表示されます)。

テストウィンドウ

(12)テストが完了すると指定した仮想マシン(TestVM)が起動します。
# Errorメッセージが表示されていますが、問題なく仮想マシンは起動されています。原因究明中につき確認できましたら改めて情報アップさせて頂きます。

※2020/3/3 追記

こちらAutomationのモジュールが古いことが原因だったみたいです。
以下手順で更新を行うとエラーが表示がされなくなり、成功メッセージが表示されます。
——————————-
Updating Azure PowerShell modules in Azure Automation accounts
https://github.com/Microsoft/AzureAutomation-Account-Modules-Update
1. 上記サイトより、”Update-AutomationAzureModulesForAccount.ps1″ をクリックし、”RAW” をクリックします。
2. PowerShellスクリプトをコピーし、テキストエディタなどにペーストします。
3. “Update-AutomationAzureModulesForAccount.ps1” として保存します。
4. Automation アカウントを開き、[Runbook] から [Runbook のインポート] をクリックします。
5. ファイルの選択にて先ほどの “Update-AutomationAzureModulesForAccount.ps1” を選択します。
Runbook 名は既定のままか、任意の名前を入力し、[作成] をクリックします。
6. インポート後、[編集] – [公開] – [はい] をクリックします。
7. “Update-AutomationAzureModulesForAccount” Runbook にて [開始] をクリックし、実行します。
8. “RESOURCEGROUPNAME” に対象 Automation アカウントのリソースグループ名を入力します。
9. “AUTOMATIONACCOUNTNAME” に対象 Automation アカウント名を入力します。
10. [OK] にて実行します。
11. ジョブが正常に完了したことを確認し、[モジュール] よりいくつかの Azure に関する PowerShell モジュールが更新されていることを確認します。
* 更新可能なまたは更新が必要なモジュールのみが更新されますので、毎回すべてのモジュールが更新されるわけではありません。
——————————–

テストウィンドウ /></p>
<p>(13)仮想マシン自動起動をスケジューリングするために、スケジュール設定を行います。[スケジュール]ボタンをクリックします。</p>
<p><img decoding=

(14)Runbookのスケジュール画面が表示されますので[スケジュールをRunbookにリンクします]をクリックすると右側にスケジュール画面が表示されます。[新しいスケジュールを作成します]をクリックすると右側に新しいスケジュール画面が表示されます。スケジュール名、開始時間、タイムゾーン、繰り返し([1回のみ]か[定期的])を入力または選択し、[OK]をクリックします。Runbookのスケジュール画面に戻りますので下部の[OK]ボタンをクリックします。

Runbookスケジュール画面

(15)設定完了するとスケジュールに登録されます。

Runbookスケジュール登録完了画面/></p>
<p>(16)自動停止のRunbook作成方法については、上記(1)~(15)の手順を自動停止に読み替えて実施して下さい。</p>
<h2><span id=まとめ

仮想マシンの自動起動、自動停止をスケジューリングしてみましたが、Azure AutomationサービスはPowerShellで実現できることは全て実行できますので、これを機に色々と試してみましょう。


この記事を読んだ方へのオススメコンテンツはこちら


この記事を書いた人

Azure導入支援デスク 編集部
Azure導入支援デスク 編集部
こんにちは!日商エレクトロニクスでは、Microsoft Azure活用に関する有益な情報を皆様にお届けしていきます。Azure移行、データ活用、セキュリティなどに関するお困りごとや、Microsoft Azureに関する疑問点などお気軽にご相談ください。

ブログにしてほしいネタなどのリクエストもお待ちしております。