0
1

[その2] Terraform Cloud Private Registory で モジュールを管理

Posted at

これは何?

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ボタンを押下することで、レジストリを登録することができます。
image.png

バージョン管理システムとの接続画面が表示されるので任意のサービスを指定して次へをクリック。
今回はGitHubを選択します。
image.png

先ほど作成したリポジトリを指定します。
image.png

パブリッシュタイプを指定することができます。
今回はバージョンタグで管理するため、タグを指定します。
image.png

作成されたプライベートレジストリは以下の通りとなります。
「Usage Instructions」下のような記述でモジュールとして呼び出すことができるようになりました。
image.png

プライベートレジストリを呼び出すtfファイルを作成

次にプライベートレジストリ上で定義されたモジュールを呼び出す実行用のリポジトリを用意します。
今回利用するためのリポジトリは以下の通りです。
https://github.com/atsw0q0/test-terraform-cloud/tree/main/02_private_registory

上記のリポジトリのディレクトリ「02_private_registory」上で.tfファイルを用意し、以下のようにsource部分で呼び出します。

main.tf
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 触ってみたと同じように設定して

image.png

これで準備の方は完了です。

テスト

以下のようにプライベートレジストリを呼び出して実行することができました。

image.png

これでさまざまなプロジェクトから統一のモジュールを呼び出すことができるようになりました。
結構便利。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1