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

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



Azure Automationで自動化できること

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

Azure Active Directoryにユーザー追加

(1)Azure Automationサービスを使用するためには、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 アカウント]をクリックします。

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

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

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

Runbook作成

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

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

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

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

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

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

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

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

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

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

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

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

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

(13)仮想マシン自動起動をスケジューリングするために、スケジュール設定を行います。[スケジュール]ボタンをクリックします。

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

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

(16)自動停止のRunbook作成方法については、上記(1)~(15)の手順を自動停止に読み替えて実施して下さい。

まとめ

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


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


この記事を書いた人

佐藤格史
佐藤格史
プリセールス担当
セキュリティ事業部にてエンジニア経験を積み、複数の大型プロジェクト案件のPMを経て、現在はプリセールス業務に従事。