APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

Azure Verified Modules の登場で Terraform を使った Azure プロビジョニングはどう変わる?

こんにちは、ACS 事業部の埜下です。

Microsoft から Azure Verified Modules (AVM) という取り組みが公開されていることをご存知でしょうか?

azure.github.io

今年の2月時点で弊社ブログでも取り上げていました。

techblog.ap-com.co.jp

当時は方針のみ公開されていましたが、現在はドキュメントも充実してきており、実際に Terraform 向けの AVM モジュールも公開されています。 普段 Terraform を使って Azure のリソースをプロビジョニングされている方も多いかと思いますが、この AVM の登場により Terraform ユーザにはどのような影響があるのでしょうか。

Azure Verified Modules が目指すもの

Azure Verified Modules (AVM) は、Infrastructure as Code (IaC) モジュールの構築、利用、提供方法を標準化し、一貫性のあるベストプラクティスを提供するための Microsoft の取り組みです。 AVM は Bicep や Terraform など複数の IaC 言語に対応し、それぞれの言語固有のレジストリで提供されます。

そんな AVM の目的は、質の高い IaC モジュールの定義、構築方法、および利用方法を標準化することで信頼性の高いモジュールを提供し、プロジェクトのスピードを加速させることです。

具体的には、以下のような特徴を持つモジュールを提供することを目指しています。

  • Microsoft が公式にサポートし、継続的にメンテナンスする
  • Well-Architected Framework(WAF)の原則に沿っている
  • 一貫性とテスト可能性を追求した仕様に準拠している
  • ドキュメントと使用例が充実しており、自己学習しやすい

これらの特徴を実現するために、AVM では様々な取り組みを行っています。 次の章では、AVM がどのようにしてモジュールの信頼性を獲得しているのか、その仕組みについて詳しく説明します。

Azure Verified Modules はどのように信頼性を獲得するのか

AVM は、以下のような仕組みにより、提供するモジュールの信頼性を確保しています。

1. Microsoft による公式サポート

AVM モジュールは Microsoft の AVM チームによって次の優先順位でサポートされています。

  1. モジュール所有者/コントリビュータが対応します。
  2. 3 営業日以内にモジュール所有者/コントリビュータからの応答がない場合は、AVM コア チームが次の手順で介入します。
    • モジュール所有者/コントリビュータに連絡して行動を促します。
    • 24 時間 (1 営業日) 以内に応答がない場合は、AVM コアチームが問題の所有権を引き継ぎ、トリアージを行った上で、その後 2 営業日以内に対応します。
  3. セキュリティ上の問題が 5 営業日経過しても対処されていない場合、必要に応じて、製品グループ(Bicep/Terraform)にエスカレーションされ、AVM コアチームを支援して解決に向けた追加のサポートが提供されます。

2. 継続的なメンテナンスと更新

AVM モジュールは、担当するモジュール所有者とコントリビュータによって継続的にメンテナンスされます。

AVM では各モジュールごとに所有者を決めることを必須としており、モジュールへの問い合わせ (GitHub Issue) が宙ぶらりんになってしまわないようにしています。 また、モジュールの所有者は Microsoft のフルタイムエンジニアであることも条件となっています。

これにより、長期的な利用と継続的な改善が約束され、Microsoft の製品・サービスのロードマップに合わせて、モジュールも常に最新の状態に保たれます。

3. 明確な仕様への準拠

すべての AVM モジュールは、明確に定義された仕様に沿って開発されます。 現在、AVM は Bicep と Terraform の IaC 言語(IaC ツール)に対応しており、言語ごとの共通仕様と、Bicep/Terraform 固有の仕様が定義されています。

仕様への準拠により、モジュール間の一貫性が保たれ、予測可能な動作が保証されます。

4. Well-Architected Framework (WAF) との整合性

Azure には Well-Architected Framework (WAF) という、ワークロードの品質を向上させるための設計フレームワークがあります。

AVM モジュールは、可能な限り Azure の Well-Architected Framework (WAF) の推奨事項に沿って設計されています。 これにより、セキュリティ、信頼性、パフォーマンス、コスト最適化などの側面で、ベストプラクティスに準拠した構成が実現されます。

5. 充実したドキュメントと使用例

各 AVM モジュールには、詳細なドキュメントと具体的な使用例が提供されます。 これにより、ユーザはモジュールの機能を正しく理解し、自身の要件に合わせて効果的に活用することができます。

6. 徹底的なテストの実施

AVM モジュールは、リリース前に徹底的なテストが行われます。 自動化されたテストにより、モジュールが AVM の仕様に準拠し、意図した通りに動作することが検証されます。


これらの取り組みにより、AVM は Azure でのインフラストラクチャのコード化(IaC)におけるモジュールの信頼性を高め、ユーザが安心して利用できる環境を提供しています。 AVM のモジュールを使うことで、ベストプラクティスに沿った一貫性のある構成を効率的に実現できるのです。

AVM モジュールの分類

少しだけ AVM の仕様的なお話しを。 AVM では、リソース モジュールとパターン モジュールの 2 種類のモジュールが定義されています。

リソース モジュール

リソース モジュールは、単一のリソース(VMなど)をベストプラクティスの設定でデプロイするためのものです。 WAF で推奨される RBAC、ロック、プライベートエンドポイントなどの設定がデフォルトで適用されます。

例えば、仮想マシンを作成する avm-res-compute-virtualmachine や Key Vault を作成する avm-res-keyvault-vault モジュールが公開されています。

パターン モジュール

パターン モジュールは、複数のリソース(多くの場合リソースモジュールを使用)をデプロイするためのものです。 Azure Architecture Center などで紹介されている一般的なアーキテクチャパターンの実装に適しています。

現在は次のパターンが公開されています。

  • Azure Landing Zone
  • Azure Landing Zone 管理
  • Virtual WAN
  • Virtual Network Gateway

どちらのモジュールも多くの構成で使えるよう設計されており、パラメータを変更するだけで様々な構成にデプロイできます。 内部の複雑さは気にせず、ドキュメントを参照しながらモジュールを活用することができるのです。

Terraform ユーザにとっての変化とメリット

2024/4/18 現在、Terraform 向けの AVM モジュールはリソース モジュール 28 個、パターン モジュール 4 個が Terraform Registry で公開されています。 その他にも、60 個ほどのモジュールが開発中となっています。

実は今までも Terraform Verified Modules (TFVM) という形で Azure リソースをプロビジョニングするためのモジュールは提供されていました。 AVM が登場したことによって、Terraform ユーザは AVM で定義された仕様に沿って開発、Microsoft にもサポートされている信頼性の高いモジュールを利用して Azure リソースをプロビジョニングできるようになります。

一部の TFVM モジュールは AVM モジュールへの切り替えを促しているものもあります。 既に TFVM モジュールを利用されている方は、これらのメリットを得るために AVM モジュールへの切り替えを検討することをお勧めします。

モジュール開発者にとってのメリット

前述のメリットは AVM 公式ドキュメントでも述べられているものですが、私個人としては、AVM はモジュールを利用するだけでなく、開発する側にとってもメリットがあると考えています。

おそらく本投稿を読まれている方の多くは、モジュールを利用するだけでなく、自分たちでモジュールを開発して利用したり、社内に提供したりしていることでしょう。 また、公開されているモジュールだけを使って Azure リソースをプロビジョニングしている組織は少ないかもしれません。 Terraform の構成を追加したりモジュールを開発したりして、公開されたモジュールでは満たせない要件に対応していると思います。

そのような場合、AVM の仕様やテスト手法が参考になります。AVM は Microsoft が「One Microsoft」というフレーズを掲げて公開している取り組みであり、Terraform AVM モジュールは Azure に対する Terraform の仕様やテスト手法のベストプラクティスが集約されています。 この知見を自組織で開発しているモジュールに取り入れることで、モジュールの信頼性を高めることができるでしょう。

まとめ

Azure Verified Modules(AVM)は、Azure でのインフラストラクチャのコード化(IaC)を強力にサポートするために Microsoft が主導している取り組みです。 AVM は、質の高い再利用可能なモジュールを提供することで、ベストプラクティスに沿った一貫性のあるリソース構成の実現を目指しています。

信頼できる高品質のモジュールを利用することで、開発者はインフラ構成の細部に悩むことなく、効率的かつ安全にリソースをデプロイできるようになると期待されます。 AVM についての FAQ も公開されていますので、組織における IaC の導入と推進に AVM を活用してみてはいかがでしょうか。

azure.github.io


【PR】
私達 ACS 事業部は Azure・AKS などのクラウドネイティブ技術を活用した内製化のご支援をしております。

www.ap-com.co.jp

一緒に働いていただける仲間も募集中です!
まだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。
我々の事業部の CultureDeck はコチラ。

www.ap-com.co.jp

本記事の投稿者: 埜下 太一
Azure をメインにインフラ系のご支援を担当しています。
Vault 試験に向けて勉強中です。
個人ブログ