Terraform Registryでモジュールを公開してみた

Terraform Registryでモジュールを公開してみた

Clock Icon2025.07.14

はじめに

皆様こんにちは、あかいけです。

Terraform Registry で公開されているモジュール、使っていますか?
私は検証などでパパっと環境を作りたいときによく使います。
例えば AWS であれば以下から検索してよく利用しています。

https://registry.terraform.io/search/modules

さてこの公開されている便利なモジュールですが、
実は HCP Terraform アカウントがあれば誰でも公開できます。

https://developer.hashicorp.com/terraform/registry/modules/publish

今回、私もモジュールを公開してみたのですが、思いのほか簡単にできたので公開までの流れを共有します。

Terraform Registry とは?

Terraform Registry は、HashiCorp が提供する Terraform プロバイダーとモジュールの公式レジストリです。
世界中の開発者が作成した再利用可能なコンポーネントを検索、共有できるプラットフォームとなっています。

https://registry.terraform.io/

パブリックとプライベート

Terraform Registry には以下の 2 つの公開形式があります。
今回はパブリックレジストリでの公開方法をご紹介します。

パブリックレジストリ

  • 全世界に公開される
  • 無料で利用・公開可能

https://developer.hashicorp.com/terraform/registry/modules/publish

プライベートレジストリ

  • 組織内でのみ利用可能
  • 企業内での標準モジュール管理に最適

https://developer.hashicorp.com/terraform/registry/private

なおプライベートレジストリについては、よろしければ以下をご参照ください。

https://dev.classmethod.jp/articles/terraform-cloud-private-registry-module-publish/

登録手順

モジュールの準備

まずは公開するモジュールを準備しましょう。
Terraform Registry でパブリックに公開するためには、以下の条件を満たしている必要があります。

  • 必須要件
    • GitHub の public リポジトリであること
    • リポジトリ名が terraform-<PROVIDER>-<NAME> の形式であること
    • リポジトリの説明(Repository description)が記載されていること
    • 標準モジュール構造 に準じた構成になっていること
    • セマンティックバージョニング (x.y.z) でタグ付けされていること

普通にモジュールを作っていればそんなに難しいことはないかなと思います。
ご参考までに、以下は今回私が公開したモジュールのリポジトリです。

アカウント作成から公開まで

1. HCP Terraform アカウントの作成

https://registry.terraform.io/ にアクセスし、右上の「Sign in」をクリックします。

registry.terraform.io_

初回の場合は「Continue with HCP account」を選択して HCP アカウントを作成するか、
既存の Terraform Cloud アカウントでログインします。

registry.terraform.io_ (1)

ログインする場合は、以下の画面でアカウント情報を入力します。

app.terraform.io_session

HCP アカウントを新規作成する場合は、
Email か Github アカウントでサインインします。

flow.idp.hashicorp.com_login_login_challenge=baocQ0Fp425Ygu7zNyMa_2h7njl-8DMDFVlUv3sB7stPrTzJ4IeL2x0QfTtPI1ajBsIIqVUDLQOjjEyO3lNqpYqG281mqypF02_Ego7TyqhVX7E33Z8GiMN380a8M97aPW3OurOc0yGqhQg6awryECFPhPwsvYmOTzLDc40WGxS8lItEiCs3UlyQ8iyb9Ig7NvV

2. 組織の作成

ログイン後、組織(Organization)を作成します。

app.terraform.io_app_organizations 1

組織の設定画面では、組織名や説明文を入力します。
今回は個人利用なので、Personal を選びます。

app.terraform.io_app_organizations (1)

3. GitHub との連携

次にモジュールを公開するため、GitHub アカウントと連携します。
「作成した Organization」→「Registry」→「Public Namespaces」で Namespaces のページへ移動します。

app.terraform.io_app_organizations (5)

右上の「New Namespace」をクリックします。
GitHub の OAuth 認証画面へ移動するので、
連携する Github アカウントを確認して、Terraform Registry へのアクセスを Authorize します。

app.terraform.io_app_organizations (3)

4. モジュールの公開

GitHub 連携後、公開したいリポジトリを選択します。
Namespace の画面から「Publish」→「Modules」をクリックします。

app.terraform.io_app_lamaglama39_registry_public-namespaces_lamaglama39_modules (1)

公開したいモジュールのリポジトリを選択して、「Publish Modules」をクリックします。

app.terraform.io_app_lamaglama39_registry_public-namespaces_lamaglama39_modules (2)

リポジトリの内容に問題がなければ、30 秒~1 分程度で Namespaces の画面で登録されていることを確認できます。

app.terraform.io_app_lamaglama39_registry_public-namespaces_lamaglama39_modules (3)

5. 公開完了の確認

公開が完了すると、以下のような URL からアクセスできるようになります。

  • https://registry.terraform.io/modules/<Githubユーザー名>/<モジュール名>/<プロバイダー名>/<バージョン>

実際の公開されたモジュールのページは以下のように表示になります。
超簡単ですね!

https://registry.terraform.io/modules/Lamaglama39/alarm-scheduler/aws/latest

スクリーンショット 2025-07-13 23.13.28

公開後の管理

バージョン管理

新しいバージョンをリリースする場合は、GitHub でセマンティックバージョニングに従ってタグを作成してリポジトリに反映するだけです。

リポジトリにタグが反映されると、Terraform Registry が自動的に新しいバージョンを検出して反映されます。

# 新しいバージョンのタグ作成例
git tag v1.1.0
git push origin v1.1.0

さいごに

以上、Terraform Registry でモジュールを公開する手順でした。
正直、想像していたよりも遥かに簡単で、体感としては GitHub リポジトリを作成してタグをつけるだけで公開できてしまった感覚です。

皆さんもオレオレモジュールをぜひ世界に公開して、Terraform コミュニティを盛り上げていきましょう。
きっと新しい発見や学びがあると思います。

またプロバイダーも登録できるので、こちらもそのうち挑戦してみたいと思います。
プロバイダー作成は流石にハードル高そうですが…

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.