
Terraform Registryでモジュールを公開してみた
はじめに
皆様こんにちは、あかいけです。
Terraform Registry で公開されているモジュール、使っていますか?
私は検証などでパパっと環境を作りたいときによく使います。
例えば AWS であれば以下から検索してよく利用しています。
さてこの公開されている便利なモジュールですが、
実は HCP Terraform アカウントがあれば誰でも公開できます。
今回、私もモジュールを公開してみたのですが、思いのほか簡単にできたので公開までの流れを共有します。
Terraform Registry とは?
Terraform Registry は、HashiCorp が提供する Terraform プロバイダーとモジュールの公式レジストリです。
世界中の開発者が作成した再利用可能なコンポーネントを検索、共有できるプラットフォームとなっています。
パブリックとプライベート
Terraform Registry には以下の 2 つの公開形式があります。
今回はパブリックレジストリでの公開方法をご紹介します。
パブリックレジストリ
- 全世界に公開される
- 無料で利用・公開可能
プライベートレジストリ
- 組織内でのみ利用可能
- 企業内での標準モジュール管理に最適
なおプライベートレジストリについては、よろしければ以下をご参照ください。
登録手順
モジュールの準備
まずは公開するモジュールを準備しましょう。
Terraform Registry でパブリックに公開するためには、以下の条件を満たしている必要があります。
- 必須要件
- GitHub の public リポジトリであること
- リポジトリ名が
terraform-<PROVIDER>-<NAME>
の形式であること - リポジトリの説明(Repository description)が記載されていること
- 標準モジュール構造 に準じた構成になっていること
- セマンティックバージョニング (x.y.z) でタグ付けされていること
普通にモジュールを作っていればそんなに難しいことはないかなと思います。
ご参考までに、以下は今回私が公開したモジュールのリポジトリです。
- 公開したモジュールの例
- リポジトリ名:
terraform-aws-alarm-scheduler
- 用途: CloudWatch Alarm の監視除外期間の設定
- https://github.com/Lamaglama39/terraform-aws-alarm-scheduler
- リポジトリ名:
アカウント作成から公開まで
1. HCP Terraform アカウントの作成
https://registry.terraform.io/ にアクセスし、右上の「Sign in」をクリックします。
初回の場合は「Continue with HCP account」を選択して HCP アカウントを作成するか、
既存の Terraform Cloud アカウントでログインします。
ログインする場合は、以下の画面でアカウント情報を入力します。
HCP アカウントを新規作成する場合は、
Email か Github アカウントでサインインします。
2. 組織の作成
ログイン後、組織(Organization)を作成します。
組織の設定画面では、組織名や説明文を入力します。
今回は個人利用なので、Personal を選びます。
3. GitHub との連携
次にモジュールを公開するため、GitHub アカウントと連携します。
「作成した Organization」→「Registry」→「Public Namespaces」で Namespaces のページへ移動します。
右上の「New Namespace」をクリックします。
GitHub の OAuth 認証画面へ移動するので、
連携する Github アカウントを確認して、Terraform Registry へのアクセスを Authorize します。
4. モジュールの公開
GitHub 連携後、公開したいリポジトリを選択します。
Namespace の画面から「Publish」→「Modules」をクリックします。
公開したいモジュールのリポジトリを選択して、「Publish Modules」をクリックします。
リポジトリの内容に問題がなければ、30 秒~1 分程度で Namespaces の画面で登録されていることを確認できます。
5. 公開完了の確認
公開が完了すると、以下のような URL からアクセスできるようになります。
https://registry.terraform.io/modules/<Githubユーザー名>/<モジュール名>/<プロバイダー名>/<バージョン>
実際の公開されたモジュールのページは以下のように表示になります。
超簡単ですね!
公開後の管理
バージョン管理
新しいバージョンをリリースする場合は、GitHub でセマンティックバージョニングに従ってタグを作成してリポジトリに反映するだけです。
リポジトリにタグが反映されると、Terraform Registry が自動的に新しいバージョンを検出して反映されます。
# 新しいバージョンのタグ作成例
git tag v1.1.0
git push origin v1.1.0
さいごに
以上、Terraform Registry でモジュールを公開する手順でした。
正直、想像していたよりも遥かに簡単で、体感としては GitHub リポジトリを作成してタグをつけるだけで公開できてしまった感覚です。
皆さんもオレオレモジュールをぜひ世界に公開して、Terraform コミュニティを盛り上げていきましょう。
きっと新しい発見や学びがあると思います。
またプロバイダーも登録できるので、こちらもそのうち挑戦してみたいと思います。
プロバイダー作成は流石にハードル高そうですが…