次のレベルのAzure IaC:Azure Verified Modules

Infrastructure-as-Code(IaC)、とりわけTerraformを用いたIaCは、当社のAzure Foundationの中核をなす要素であり、あらゆるクラウド移行の土台でもあります。IaCを体系的に使えば、クラウドサービスの導入も新しい製品の開発も速くなります。ここで浮かぶのが次の問いです。どこから始めるのが一番よいのでしょうか。

次のレベルのAzure IaC:Azure Verified Modules

Azure Verified Module - Microsoftのベストプラクティスに沿ったIaC

Microsoftはこのテーマに本腰を入れて取り組み、Azure Verified Modules (AVM)という、ベストプラクティスに沿ってAzureにリソースを体系的にデプロイするためのフレームワークを作り上げました。

AVMには3つの種類があります。

  • Resource Modules - 定義された1つのクラウドリソースをデプロイする
  • Pattern Modules - 定義された1つのクラウドワークロードをデプロイする
  • Utility Modules - Resource ModulesやPattern Modulesから利用される補助モジュール

統一された標準を保つため、Microsoftは新しいAVMリソースが満たすべき一連の要件を定めています。これはTerraformにも、Microsoft Azure独自のIaC言語であるBicepにも当てはまります。

どのAVMにもMicrosoftの担当者が割り当てられており、作成、継続的な開発、問題への対応を担当しています。

利用できるモジュールはすべてオープンソース(MITライセンス)として、Azure GitHub Organisationの公開GitHubリポジトリで入手できます。モジュールがうまく動かない場合や、必要なパラメーターがまだない場合は、誰でも問題を報告したり、開発に加わったりできます。

AVMはどのように始めるのか

AVMはTerraformやBicepの他のモジュールと同じように動作します。独立して呼び出され、必要なパラメーターをすべて受け取ります。AVMの作成要件により、必要なパラメーターは最小限に抑えられ、無理なく使い始められるようになっています。

Terraformの例です。追加のデータディスクを持つ仮想マシンをデプロイするには、Azureで少なくとも次のリソースが必要になります。

  • azurerm_windows_virtual_machine または azurerm_linux_virtual_machine
  • azurerm_network_interface
  • azurerm_managed_disk
  • azurerm_virtual_machine_data_disk_attachment<

これらのリソースにはそれぞれ必須のパラメーターがあり、リソースグループ名、対象リージョン、リソース自体の名称など、何度も繰り返し登場するものが少なくありません。

AVMを使うと、自分のコード内での呼び出しは必要なパラメーターを備えた単一のリソースに簡略化され、その先はモジュールの中で処理されます。AVMはMicrosoftの代表的なベストプラクティスをあらかじめ組み込んでいるため、多くのパラメーターには既定値が設定されており、追加の設定は不要です。たとえば多くのモジュールでは、TLS 1.2が既定値になっていたり、パブリックアクセスがブロックされていたりします。

使いたいリソースのAVMがまだない場合はどうするのか

AVMのオープンソースライセンスがあるので、フレームワークを土台に自分で開発を始められます。後日Microsoftの担当者が公式のAVMリソースの作成に着手した場合には、オープンソースの考え方どおり、それまでに積み上げた成果でその開発を後押しできます。

GKVM - glueckkanja ❤️ Open Source

glueckkanjaはまさにこのアプローチをとっており、AVMフレームワークを基にしたモジュールを開発し、その後に一般公開する取り組みでもお客様を支援しています。

当社はこれらのモジュールをGKVM(GlueckKanja Verified Modules)と呼んでいます。AVMの要件を満たしているだけでなく、数多くのプロジェクトで得た当社自身の知見も反映されているからです。

GKVM Resouce Modules:

GKVM Pattern Modules:

モジュールに機能を追加するきっかけになるイシューは、どれも歓迎します。

参考リソース

お問い合わせはこちら

Azure上のInfrastructure as Codeについてもっと知りたい方は、ぜひご連絡ください。Azure Verified Modulesを使って、より速く、より標準化された、より持続可能なかたちでクラウドを活用する方法をご紹介します。最初の一歩でも、スケールする実装でも、当社は経験とベストプラクティスでお手伝いします。ご連絡をお待ちしています。

関連記事