tfe providerでHCP Terraform Organizationsを作成してみた

tfe providerでHCP Terraform Organizationsを作成してみた

Clock Icon2025.03.03

HCP Terraformの検証時に、個人用の一時的なHCP Terraform Organizationsがほしいときがあります。

管理の負荷を下げるために、Terraformで管理したいです。

tfe providerでは、HCP Terraform Organizationsの作成が可能です。

今回はtfe providerでHCP Terraform Organizationsを発行してみます。

前提条件

以下が必要です。

  • HCP Terraform Account
  • HCP Terraform Token

まだ作成していない場合は、以下を参考に作成してください。

HCP Terraform Account作成の参考:

https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/users
https://zenn.dev/chario/books/tfc-aws-introductory-book/viewer/04_tfc_create_org_user

HCP Terraform Token作成の参考:

https://developer.hashicorp.com/terraform/cloud-docs/users-teams-organizations/api-tokens
https://zenn.dev/chario/books/tfc-aws-introductory-book/viewer/05_02_aws_iam_role_create#ローカルからhcp-terraformへの接続

今回は、ローカルからtfe providerを実行します。その際に、HCP Terraform Tokenが必要です。

上記手順でTokenを発行すると、以下にTokenが保存されます。以前HCP Terraform Tokenを発行した覚えがある場合は、確認してみてください。

% cat ~/.terraform.d/credentials.tfrc.json
{
  "credentials": {
    "app.terraform.io": {
      "token": "<Token>"
    }
  }
}

HCP Terraform Organization作成

以下のファイルを用意します。

main.tf
terraform {
  required_providers {
    tfe = {
      source  = "hashicorp/tfe"
      version = "~> 0.64.0"
    }
  }
}

resource "tfe_organization" "test" {
  name  = "test-sato-1" # 置き換えてください
  email = "hoge@example.com" # 置き換えてください
}

tfe_Organizationには最低限、nameemailが必要です。自分の環境に合わせて置き換えてください。

nameはOrganizationの名前になります。

emailはOrganization関連の通知先メールアドレスです。例えば、Organizationを削除した際の通知などが来ます。

tfe_organization | Resources | hashicorp/tfe | Terraform | Terraform Registry

Terraformを実行して、Organizationを作成します。

terraform init
terraform plan
terraform apply

コンソール上からもOrganizationsに追加されていることが分かります。

vscode-drop-1740881280711-8uw92yvfzo6.png

ちなみに、複数Organization作成したい場合メールアドレス(email)の重複は問題ありません。nameは重複が不可です。

OK
resource "tfe_organization" "test1" {
  name  = "test-sato-1"
  email = "hoge@example.com"
}
resource "tfe_organization" "test2" {
  name  = "test-sato-2"
  # メールアドレスの重複はOK
  email = "hoge@example.com"
}
NG
resource "tfe_organization" "test1" {
  name  = "test-sato-1"
  email = "hoge@example.com"
}
resource "tfe_organization" "test2" {
  # 名前の重複はNG
  name  = "test-sato-1"
  email = "hoge@example.com"
}

作成されるOrganizationsについて

上記のコードでは、FreeプランのOrganizationsが作成されます。

料金は発生しませんが、一部機能が利用できない点にご注意ください。

各プランの機能差は以下から確認できます。

Terraform Pricing

おわりに

HCP Terraform OrganizationもTerraformで管理ができます。

Terraformで管理したことで作成削除が簡単になりました。Organizationレベルの検証が捗りそうです。

以上、AWS事業本部の佐藤(@chari7311)でした。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.