これは何?
Terraform CloudにおけるPrivate Registoryの機能の紹介になります。
Private Registoryを使用するメリット
Private Registory について詳しく知りたい方はこちらをさんこうに。
Private Registoryを使用するメリットとして、私が触れて感じたことは大きく2点になります。
- ローカルモジュールを置くことなく、複数環境でモジュールを呼び出すことができること。
- バージョン管理が容易であること。
- 以下のように利用したいバージョンを指定することで、任意のバージョンの状態でリリースできる。
- ローカルモジュールでは、既存モジュールの最新化に伴い思わぬ変更/削除も発生するかもしれないが、バージョンを変更しなければ、従来の使い方ができる。
module "network-templates" {
source = "<<プライベートレジストリ名>>"
version = "1.0.0"
...
}
作業手順
今回実施する内容の大まかな内容としては以下の通りです。
- GitHubなどのVCS上のバージョンタグ登録
- プライベートレジストリの登録
- ワークスペースの新規作成
になります。
プライベートレジストリ用リポジトリの準備
GitHubなどのリポジトリを用意します。今回使用するリポジトリはこちらになります。
バージョンタグを追加
mainブランチを最新の状態にした後、バージョンタグを追加します。
git tag v1.0.0
git tag
git push origin v1.0.0
git show v1.0.0
Private Registory の登録
リポジトリの用意ができたら次はプライベートレジストリの登録になります。
以下のようにPublishボタンを押下することで、レジストリを登録することができます。
バージョン管理システムとの接続画面が表示されるので任意のサービスを指定して次へをクリック。
今回はGitHubを選択します。
パブリッシュタイプを指定することができます。
今回はバージョンタグで管理するため、タグを指定します。
作成されたプライベートレジストリは以下の通りとなります。
「Usage Instructions」下のような記述でモジュールとして呼び出すことができるようになりました。
プライベートレジストリを呼び出すtfファイルを作成
次にプライベートレジストリ上で定義されたモジュールを呼び出す実行用のリポジトリを用意します。
今回利用するためのリポジトリは以下の通りです。
https://github.com/atsw0q0/test-terraform-cloud/tree/main/02_private_registory
上記のリポジトリのディレクトリ「02_private_registory」上で.tfファイルを用意し、以下のようにsource部分で呼び出します。
module "network-templates" {
source = "app.terraform.io/atsuw0w-test-terraform/network-templates/aws"
version = "1.0.0"
# Variables
pj_tags = {
name = "fuga"
env = "test"
}
vpc_prefix = {
prefix = "net"
cidr_block = "10.1.0.0/16"
}
subnet ={
pub = {
pub_a = {
prefix = "pub"
cidr_block = "10.1.0.0/24"
az = "a"
is_public_subnet = true
}
pub_c = {
prefix = "pub"
cidr_block = "10.1.1.0/24"
az = "c"
is_public_subnet = true
}
}
pri = {
pri_a = {
prefix = "pri"
cidr_block = "10.1.10.0/24"
az = "a"
is_public_subnet = false
}
pri_c = {
prefix = "pri"
cidr_block = "10.1.11.0/24"
az = "c"
is_public_subnet = false
}
}
edp = {
edp_a = {
prefix = "edp"
cidr_block = "10.1.20.0/24"
az = "a"
is_public_subnet = false
}
edp_c = {
prefix = "edp"
cidr_block = "10.1.21.0/24"
az = "c"
is_public_subnet = false
}
}
}
}
ワークスペース新規作成
[その1] Terraform Cloud 触ってみたで、作成したワークスペースでも良いのですが、折角なので今回用のワークスペースを新規で作成します。
Terraform Working Directory で作業ディレクトリ「02_private_registory」を指定します。
あとはワークスペース変数なども[その1] Terraform Cloud 触ってみたと同じように設定して
これで準備の方は完了です。
テスト
以下のようにプライベートレジストリを呼び出して実行することができました。
これでさまざまなプロジェクトから統一のモジュールを呼び出すことができるようになりました。
結構便利。