3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Teams から Azure VM を起動・停止する

Last updated at Posted at 2021-06-05

Azure 上の仮想マシンを teams から まとめて起動・停止させたので備忘録としてまとめます。

背景

Azure 上に検証環境として複数の仮想マシンを立てています。
これは検証時(週に数回)だけ使いたいのですが、10台近くあるので Azure Portal 上でポチポチ起動・停止するのがめんどくさくなりました。
スクリプトで実行すればいいだけの話ですが、なんとなくスタイリッシュ?に実行したかったので Teams 連携させてみました。

方法の検討

Azure 仮想マシンを起動・停止させるなら Azure Automation (以下 Automation) の Start/Stop VMs during off-hours という方法があります。
調べたところ、これはスケジュール実行するもので今回のニーズに合わない(検証は不定期で行われる)ので候補から削除しました。

ただこの Automation には
・スケジュール実行
・手動実行
・他のプログラムからの呼び出し
・webhook
といった実行方法があり、今回は webhook と Teams を連携させてみました。

Azure 側の設定

まずは Automation を使うために Automation Account をデプロイします。
少し話がそれますが、このAutomation は Log Analytics と連携させることで使うことができる機能(Start/Stop VMs during off-hours など)があります。
連携させるためには予め決められたリージョンである必要があるので、デプロイする際にリージョンを確認しておくと今後 そのような機能を使いたくなった時に便利かもしれません。(今回は気にしなくて結構です)

(追記)
Automation Account に Managed ID と呼ばれる ID を振って、Azure 仮想マシンの起動・停止ができる権限を与えたいと思います。
Automation の Managed ID は 2021/6/5 ではプレビューの機能です。

この Managed ID に対して、適切な スコープ(サブスクリプションやリソースグループなど)で適切な役割を与えます。
例)スコープ:リソースグループ、役割:仮想マシン共同作成者

(追記ここまで)

Automation Account が準備できたら、スクリプトの準備をします。
Azure のモジュールをインストールする必要があるので
Automation Account > モジュール ギャラリー
から必要なモジュールをインストールします。今回は以下の2つが最低限あれば動きます。

  • Az.Accounts
  • Az.Compute

以下のように検証環境ごとにいくつか仮想マシンが存在しているため、並列処理で仮想マシンの実行を早くしたいと思います。

  • 検証環境 1 -> VM01, VM02, VM03, VM04,...
  • 検証環境 2 -> VM11, VM12, VM13, VM14,...

PowerShell で並列処理をしたい場合は ワークフローの中で ForEach -Parallel を使えばいいらしいので

Automation Account > Runbook > Runbook の作成
PowerShell ワークフロー を選択し、実行内容を記載します。

スクリプトの内容はこちらに記載しています。
※Runbook 名とワークフロー名を同じにする必要があります。

今回は引数で検証環境を指定できるようにしてみました。これを保存し、発行します。

続いて webhook で使うための設定を行います。
対象の Runbook の画面から Webhook の追加 を選択します。
名前と引数をここで入力しておきます。

注意点として、URL はこのタイミングでしか確認ができないので 忘れないようにメモしておきます。

無事に発行が完了すれば Azure 側の設定は以上です。

Teams 側の設定

Teams のあるチームのチャネルからメンションしてメッセージを送ると webhook が実行されるように設定します。
以下の公式ドキュメントの手順を参考にして簡単に設定ができました。

適切なチームを選択し 、[チーム の管理] ([•••] ドロップダウン メニューから [チームの管理] を選択します。
ナビゲーション バーから [アプリ] タブを選択します。
ウィンドウの右下隅で、[送信 Webhook を作成する] を選択します。
表示されたポップアップ ウィンドウの必要なフィールドへの入力を行います。

まとめ

無事に Teams から Azure 仮想マシンの起動・停止ができるようになりました。
Automation の ワークフロー、Teams で webhook の登録は初めて試したんですが 何とかできて良かったです。

※Managed ID に関する設定が漏れていたので追記しました、

3
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?