Terraform RegistryのVerifiedモジュールとは？


# TL;DR

* Terraform Registryに登録されているモジュールには、Verifiedモジュールとコミュニティモジュールの2つがある
* Verifiedモジュールは、HashiCorp社によって認定および互換性テストを受けており、信頼できるパートナーによって保守されているもの
* コミュニティモジュールは、任意のユーザーによって提供されており、HashiCorp社によって直接は検証されていないもの
* 互換性、継続してメンテナンスされることに対する期待値がポイント


# Terraform Registryとは

Terraform Registryとは、TerraformのProviderやモジュールを公開、利用することができるレジストリです。

[Terraform Registry](https://registry.terraform.io/)

Terraform Registryを使うことで、作成したProviderやモジュールを公開し、利用することができます。

以前はTerraform Module Registryと呼ばれていたようですが、モジュールだけではなくProviderも含められるようになったので、「Terraform Registry」とリネームされたようですね。

[Announcing Providers in the New Terraform Registry](https://www.hashicorp.com/blog/announcing-providers-in-the-new-terraform-registry/)

今回は、モジュールにフォーカスして見ていきます。


# Terraform Registryに登録されている2つのモジュール

Terraform Registryに登録されているモジュールは、こちらのページで参照することができます。

[Modules](https://registry.terraform.io/browse/modules)

Providerを指定したり

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309669/b3528884-ef76-bfe5-6263-b4cb2b966ddc.png)

「Verified」にチェックを入れることで、Verifiedモジュールで絞り込むことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309669/53d6c46f-1f74-8d5d-a216-14a34bd92402.png)

この「Verified」の意味をちゃんと押さえておこうと思ったのが、今回調べたきっかけです。

Terraform Registryには、次の2つのモジュールが登録されています。

* Verifiedモジュール
* コミュニティモジュール

違いは、以下のページに書かれています。

[HashiCorp Terraform Module Registry](https://www.hashicorp.com/blog/hashicorp-terraform-module-registry/)

> There are two categories of modules available in the Module Registry: Verified modules and Community modules. Verified modules have undergone certification and compatibility testing by HashiCorp prior to being accepted and are maintained by trusted HashiCorp partners. Community modules can be contributed by any user, but have not been validated by HashiCorp directly.

Verifiedモジュール。

> Verified modules have undergone certification and compatibility testing by HashiCorp prior to being accepted and are maintained by trusted HashiCorp partners.

コミュニティモジュール。

> Community modules can be contributed by any user, but have not been validated by HashiCorp directly.

予想には難くありませんが、VerifiedモジュールはHashiCorp社により認定および互換性テストを受けたものですね。また、HashiCorp社が信頼するパートナーから提供されているというところもポイントでしょう。

Verifiedモジュールは、検証済みであるマークが入るようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/309669/2b32a038-ff78-8713-521c-9abbf9bf99cd.png)

一方でコミュニティモジュールは、自由に作れるけれどもHashiCorp社は直接検証していないものになります。

また、Terraformのドキュメントにも記載があります。

[Verified Modules](https://www.terraform.io/docs/registry/modules/verified.html)

> Verified modules are reviewed by HashiCorp and actively maintained by contributors to stay up-to-date and compatible with both Terraform and their respective providers.

こちらにも、似たようなことが書かれていますね。

Verifiedモジュールに期待されるのは、メンテナンスされ続けること、ですね。柔軟性や機能性で認定されるわけではありません。

> Verified modules are expected to be actively maintained by the Cloud providers. The verified badge isn’t indicative of flexibility or feature support;

Terraformのモジュールとして使う、という面においては、Verifiedモジュールとコミュニティモジュールの両者に差はありません。

ただ、モジュールの検証プロセスを、コミュニティにも委譲できるようにしたい意志は見えたりします。

> Module verification is currently a manual process restricted to a small group of trusted HashiCorp partners. In the coming months, we'll be expanding verification to enable the broader community to verify their modules.

このあたりの様子を見つつ、モジュールの維持を重視するかどうかでVerifiedモジュールに対する期待値が変わっていく感じでしょうね。

その他、ダウンロード数なども見たい場合は、モジュールの一覧ページから見るか、Terraform RegistryのHTTP APIを使いましょう。

[HTTP API](https://www.terraform.io/docs/registry/api.html)