[Terraform]tfe providerにEphemeral Resourceが追加されました

[Terraform]tfe providerにEphemeral Resourceが追加されました

Clock Icon2025.05.09

tfe provider v0.65でEphemeral Resourceが追加されました。

  • tfe_audit_trail_token
  • tfe_organization_token
  • tfe_team_token
  • tfe_agent_token
  • tfe_outputs

https://github.com/hashicorp/terraform-provider-tfe/releases/tag/v0.65.0

tfe providerを使うことで、HCP Terraformの各種TokenをTerraform経由で作成できます。

通常のResourceでは、Tokenの値がStatefileに残ります。

これはStatefileを見れるユーザーはTokenの値を確認できてしまうため、リスクがあります。

今回追加されたEphemeral Resourceを使うことで、StatefileにTokenの値を残さずにTerraformでTokenを作成できます。

やってみた

今回は、Ephemeral Resource tfe_team_tokenを使って、Team Tokenを作成してみます。

https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/ephemeral-resources/team_token

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

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

provider "tfe" {
  hostname = "app.terraform.io"
}

resource "tfe_team" "this" {
  organization = "hoge" # HCP Terraform Organizations名
  name         = "sato-team-token-test"
}

ephemeral "tfe_team_token" "this" {
  team_id = tfe_team.this.id
}

以下のコマンドでTerraformを実行します。

terraform init
terraform plan
terraform apply

HCP Terraformにログインし、Settings -> API tokens -> Team Tokensの順に選択します。

Team Tokenが作成されていることを確認できました。

vscode-drop-1746778133842-86kyeb8bdf3.png

Secretsが保存されていないかStateを確認してみます。

以下のコマンドを実行します。

terraform show

以下のようにtfe_teamだけ出力されており、tfe_team_tokenの値は保存されていませんでした。

出力例
# tfe_team.this:
resource "tfe_team" "this" {
    allow_member_token_management = true
    id                            = "team-hogehoge"
    name                          = "sato-team-token-test"
    organization                  = "hoge"
    sso_team_id                   = null
    visibility                    = "secret"

    organization_access {
        access_secret_teams        = false
        manage_agent_pools         = false
        manage_membership          = false
        manage_modules             = false
        manage_organization_access = false
        manage_policies            = false
        manage_policy_overrides    = false
        manage_projects            = false
        manage_providers           = false
        manage_run_tasks           = false
        manage_teams               = false
        manage_vcs_settings        = false
        manage_workspaces          = false
        read_projects              = false
        read_workspaces            = false
    }
}

おわりに

tfe providerへのEphemeral Resourceの追加でした。

活用方法についても、後ほどブログにしたいと思います。

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

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.