Azure Policyでデプロイ可能な仮想マシンのサイズを制限する方法

こんにちは

Azure PolicyとはAzureのリソースに対して様々なポリシーを適用することができる機能です。
特定のリージョンにリソースをデプロイさせないだとか特定のSKUしかデプロイさせないといったことが制御できます。

今回はAzure Policyでデプロイ可能な仮想マシンのサイズを制限する方法を紹介します。

仮想マシンのサイズはvCPUやメモリの割当ごとにたくさん用意されていますが、当然リソースが多く割り当てられるほど時間あたりの金額も高くなってきます。
私は検証環境で仮想マシンをデプロイする際は基本的にBシリーズのvCPUが2~4くらいのを選択するようにしていますが、うっかりE32sV3(vCPU:32 RAM:256GB)のサイズを選んでしまうとどうなるでしょうか。

サイズ vCPU Memory 価格(30日)
B2S 2 8GB ¥8,911
E32sV3 32 256GB ¥209,305

めちゃくちゃ高いのをあえて選んだので当たり前ですが1ヶ月でこれだけ差が出ます。

デプロイするときに自動シャットダウンとか設定すれば影響は少ないかもしれませんがそもそもデプロイできなければ間違う心配もなくなります。

ということで実際に仮想マシンの利用可能サイズを制限するための設定をしてみたいと思います。

①まずはAzure Portalのすべてのサービスから検索欄に[ポリシー]と入力してポリシーの設定画面に移動します。

②ポリシーの設定画面が表示されたら[割当]を選択したあと[ポリシーの割当]を選択します。

③ポリシーの割当画面が表示されます。

以下を設定していきます。

<スコープ>
スコープ:対象とするサブスクリプションを選択します。
除外:ポリシーの適用範囲から除外するリソースを選択します。

<基本>
ポリシー定義:ポリシーの定義を選択します。ここでは許可されている仮想マシンSKUという定義を利用します。

割り当て名:ポリシーの名前を設定します。ポリシー定義を選択すると自動的に入るのでそのままにしておきます。似たような設定を複数のポリシーで行う場合は変更すると判別しやすいです。
説明:説明を入力します。任意の値を入力します。
割り当て担当者:担当者を入力します。既定でログインアカウントの表示名が設定されますが任意の値に変更可能です。

<パラメーター>
許可されているSKU:ここでは仮想マシンのサイズでデプロイを許可するものを選択します。

<マネージドID>
・今回の設定では当てはまらないのでチェックボックスは空のままで進めます。

④入力が完了したら[割り当て]をクリックして設定の反映を行います。

⑤ポリシーを作成した直後は概要ページのコンプライアンスの状態が[未開始]となってしまうので反映されるまで30分~60分程待ちます。

こちらの環境ではすでにポリシーで定めたサイズとは別の仮想マシンが動いているので状態に[準拠していない]として表示されていますがここではスルーします。

以上で設定は完了です。早速ポリシーの効果を確認してみましょう。

ポリシーで設定したサイズ(B1s)で仮想マシンを作成するときの確認画面

ポリシーで設定していないサイズ(E32s_v3)で仮想マシンを作成するときの確認画面

検証に失敗しましたと表示され、仮想マシンを作成することができません。
赤くなっている箇所の[詳細を表示するには~]をクリックすると以下のような画面が表示されます。

ポリシーによってエラーとなっていることが分かりますね。

仮想マシンのサイズ以外にもリージョン制限などのデプロイする上で指定する値について様々な制約をかけることが可能になります。

特におすすめなポリシー設定については今後も紹介していきたいと思います。

<参考リンク>
Azure Policyのドキュメント
https://docs.microsoft.com/ja-jp/azure/governance/policy/