AutomationのRunbookを利用してVMの起動・停止を自動化する

 


Automation
アカウント

こんにちは。MPです。

プロジェクトでいよいよ本機能をデプロイすることになりました。
雑記事で検証を行っていたのでいよいよ実践です。

雑記事よりさらにIAMロール絞って作成していきます。

 

やりたいこと

AutomationのRunbookを利用してVMの起動・停止を自動化する。

前提条件

ロールは潤沢に使えるわけではない。特に「共同管理者」はだめ。
ネットワーク系の権限を与えていないのでVM作成前に予め用意しておくこと。

作業用アカウントの準備

作業用アカウントを作成します。VM管理ユーザー君です。

見ての通り割り当てられたロールはありません。

これじゃVM作れないし、Automationアカウントも作れないので、リソースグループにてロールの割り当てを行います。

ロール 説明
仮想マシン共同作成者 Virtual Machines を管理できます。ただし、それらへのアクセスは含まれません。また、それらが接続している仮想ネットワーク、もしくはストレージ アカウントも含まれません。
ストレージ アカウント共同作成者 ストレージ アカウント データへのフル アクセスを提供するストレージ アカウント キーへのアクセスなど、ストレージ アカウントを管理できます。
Automation共同作成者 Automation 共同作成者ロールを使用すると、Automation アカウントに対する他のユーザーのアクセス許可を変更する以外の、Automation アカウント内のすべてのリソースを管理できます。
マネージド ID 共同作成者 ユーザーが割り当てる ID の作成、読み取り、更新、削除。

 

VMの作成

仮想マシンの作成で、適当にVMを作成します。
起動して、停止するだけなのでミニマムで構いません。

 ・権限が少なすぎてOSログイン用の鍵すら作れませんでした。
  (これは問題あれば適宜権限を。。)
 ・ネットワーク系の設定は知見がないので手探りで適当に設定しました。
  VM時に新規作成ができないのである程度知識をもってやると
  いいかもしれません。

 

さて。。なんとかできました(汗)

Automationアカウントの作成

さあ、いよいよAutomationです。
まずはAutomationアカウントを作成していきましょう。

まだ何もないので「Automation アカウント の作成」でアカウントを作成します。

こんな感じで入力します。
後はほぼデフォルト設定です。

 

無事できました!
さあここからが本番ですね。

Runbookの作成

実はですね。
Azureさんには素敵なリソースが準備されていて、Automationアカウントのメニューにこんなものがあります。

VMの開始/停止あるじゃん。。。

えー。ありますよ。これも実は検証しました。ところがですね。底辺のシステム管理者にはこの機能で利用する「共同作成者」という強力権限が与えられてないので、この機能使えないのです。

※ちなみに「くれ」っていったらダメって言われました。

この機能の使い方は公式を参照してください。

learn.microsoft.com

 

なので、何とかして「共同管理者」を使わないでやるのが今回の目的です。はい。

まず、Runbookを開きます。

開くとチュートリアルがすでにデプロイされてますけど無視して「ギャラリーを参照」を選びましょう。

一から作るのは大変なのでギャラリーから拝借します!
本日利用するのはこちら!

大丈夫か?

ソースの中見たんですけど、ほんとシンプルでいいです。

ささっ、インポートしちゃいましょう。

無事インポートされました。
インポート終わったらいきなりホーム画面に戻すのはやめてほしい。。。

 

インポートしたら早速該当のRunBookを開きます。

引数はSubscriptionID/VMName/Shutdownの3つ。最後は起動の場合はfalseを与えればよさそうです。

早速テストしてみます。

 

実行前に!
ワークフロー名をRunbookのファイル名と合わせないといけないのね。(忘れずに)

こんな感じかしら。

 

エラーになりました。
このエラーは読んでもさっぱりわからない(実はアクティビティログ見るとすぐ答えが出るんですけどね。。。)ので一旦載せておきます。

調べてみましたが、どうもAutomationアカウントのマネージドIDに対しての権限が足りないようです。ためしに、仮想マシン起動と停止の権限をアプリにに付与してみました。

再度チャレンジ!

無事VMが起動しました!

スケジューリングをする

自動で起動と停止が実行されるように、スケジューリングをします。

まずはこのRunbookを公開します。公開ボタン押すだけです。

 

続いてRunbookの実行スケジュールを追加します。

まずは一度だけ起動と停止するスケジュールを追加してみます。

実行パラメーターも追加します。

同様に停止の分も作成します。とりあえず起動1分後に停止するように設定します。

こんな感じで準備されました。

後は時が来るのを待つだけ。。。

1分なのでVMのアクティビティログで結果を確認します。

 

おおおおおお。できた!無事完成です。

 

これで定期的にスケジューリングすれば、毎日日中時間帯だけ起動するようなVM設定ができちゃいます。

 

クラウドはこのように工夫すれば多少強引でも何でもできるところが、、、
嫌いじゃない。。