[Terraform]tfe providerにEphemeral Resourceが追加されました
tfe provider v0.65でEphemeral Resourceが追加されました。
- tfe_audit_trail_token
- tfe_organization_token
- tfe_team_token
- tfe_agent_token
- tfe_outputs
tfe providerを使うことで、HCP Terraformの各種TokenをTerraform経由で作成できます。
通常のResourceでは、Tokenの値がStatefileに残ります。
これはStatefileを見れるユーザーはTokenの値を確認できてしまうため、リスクがあります。
今回追加されたEphemeral Resourceを使うことで、StatefileにTokenの値を残さずにTerraformでTokenを作成できます。
やってみた
今回は、Ephemeral Resource tfe_team_token
を使って、Team Tokenを作成してみます。
以下の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が作成されていることを確認できました。
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)でした。