Azureクォータグループを使ってみた件

5月の末に、クォータグループがGAされました。

https://learn.microsoft.com/ja-jp/azure/quotas/quota-groups

Azureのリソースにはクォータと呼ばれる制限が設定されており、ソフトリミットである制限においては「新しいクォータ要求」を行うことで上限の引き上げが可能になります。

# クォータグループができる前

社内のシステムでは数千～数万VMの仮想マシンが稼働し様々なサービスを提供しており、多くのコンピューティングリソース(vCPU)を必要としています。
このため日本マイクロソフト社と定期的なコミュニケーションを取りながら既存のサブスクリプションに対するコンピューティングリソースのクォータの引き上げを実施しているのですが、Azureもデータセンターの増強を常時行っていることと思いますが、東日本リージョンのDsv5やDdsv5などの需要が非常に高いようで、すぐにクォータ引き上げができない状況になります。

すると毎回Azureキャパシティーカスタマーエクスペリエンスのチームより、Intel V4シリーズを代替として検討できないか聞かれるのですが、難しい回答をするとバックログ行きになります。
ただ早急な増強が必要な場合において、SR(サポートリクエスト)により同じリージョン、同じモデルに対してサブスクリプション間のクォータの付け替えと云うのが可能でした。

現在クォータグループの一般提供により、サブスクリプション間のクォータの移動は通常のクォータ申請からは受け付けてくれず、①クォータグループを利用するか、②マイクロソフトのアカウント担当者に相談するか、をガイドされます。

# クォータグループを作成する
クォータグループは管理グループに対して作成します。
管理グループは、Tenant Root Groupと云う最上位の管理グループ配下に任意の管理グループを階層型に構成し、複数のAzureサブスクリプションをグルーピングして管理するものです。
いまの仕様では、サブスクリプションは１つのクォータグループにしか所属できないため、クォータグループは共有対象とするサブスクリプション全てが含まれる管理グループに対して作成するのが良さそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330959/1baf4ae8-8947-4ca4-9f96-e4afa1f97d19.png)
上図では、本番系は各サービスで使用するサブスクリプション内でのみシェア、開発系はサービス間も含めてシェアできるクォータグループの構成を表現してみました。

クォータグループは、Azureポータルで、[クォータ] を検索して選択したクォータ画面で、[設定] - [クォータ グループ]より[+ 作成] をクリックして作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330959/3c6ff491-417e-4453-b84c-1f7bc63c1c43.png)

次にクォータグループを作成する管理グループを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330959/caf04db5-3a25-47d9-96e9-da94e3f47c80.png)

そのあとで、サブスクリプションを選択して、クォータグループを作成するのですが、ここで下記のようなエラーが出力される可能性があります。

:::note alert
You do not have quota wirte permissions on subscription <サブスクリプションID>. Verify that the user/app/Managed Identity has quota write permissions.
It must have Role-Based Access Control (RBAC) at subscription level with one of the following roles: Administrator, User Access Administrator, Owner, or Quota Request Operator Role.
Additionally, make sure that Microsoft.Quota is registered in this subscription. You may need to contact the account owner administrator, or contributor if the above roles are not assigned.
:::

:::note alert
アクション 'Microsoft.Quota/groupQuotas/write' を実行する認可がないか、スコープが無効です。
:::

このエラーに対して所有者など要求される権限がない場合もあるかも知れませんが、クォータグループに含めようとするサブスクリプションのリソースプロバイダーMicrosoft.Quotaが未登録となっていることに起因する可能性があります。
この場合、サブスクリプション画面の [設定] - [リソース プロバイダー] より、Microsoft.Quotaを登録することでサブスクリプションをクォータグループに含めることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330959/8e482dbc-1653-452b-9dd9-3306b2a5eb5f.png)

# クォータグループ内でクォータを移動する

クォータグループ内の移動はさほど難しいものではないですが、操作を行う上でのAzureポータルの表示が「本当の大丈夫なのだろうか」と一抹の不安を覚える選択肢なので言及しておきます。(操作当時時の表示です)

対象とするクォータグループを選択した後で、最初に余剰なクォータを持っているサブスクリプションから「グループクォータ」と呼ばれる場所に移動させます。
その場合、[クォータをファミリの制限に戻す]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330959/9f3fcb2e-0833-492f-80c9-b41491f20897.png)
この次の画面で、具体的にどれくらいの数量を減らし、グループクォータにプールさせておくか、という設定が可能になります。(デフォルトの350(ファミリの初期の制限値)に戻ってしまうのではないかと不安になるような記載ですが大丈夫です)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330959/9f1fd178-f35f-4816-9954-f50104c80a15.png)
ここでは500vCPUをクォータグループに移動させています。

クォータグループにクォータが移動された後で、今度は[サブスクリプション クォータを増やす]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330959/1b4b9afb-5c95-469d-ae32-5366d13f324b.png)

サブスクリプションからクォータを減らした時と同様、今度はクォータが必要なサブスクリプションに対して増量を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3330959/464765da-1e06-46bf-84ea-6c297d1a4d7f.png)

# さいごに
クォータグループ全体でクォータが枯渇した場合は従来の方法でクォータの引き上げを行う必要があるため、一時しのぎと云えるかも知れませんが、割り当ての速やかに変更ができるようになったことは複数のサービスを提供している場合に優先順位を付けてSLAを維持することが可能となった手段と云えるので有用な機能だと思います。

ここまでお読みくださいありがとうございました。