tfe プラグインの制限を超えるために何かをまとめようとしています。
更新する必要がある Terraform Cloud の変数で管理する 200 以上のワークスペースがあります。この場合、更新する必要があるすべてのワークスペースは「dev-workspace」で始まります。
次のデータブロックがあります。
data "tfe_workspace_ids" "all" {
names = ["*"]
organization = "myorganization"
}
モジュールの制限により、これらのワークスペースのワイルドカード検索を行うことができません。このデータ ブロックは、すべてのワークスペースを含む文字列のマップを返します。
aa = {
"dev-workspace-1" = "ws-anonymized"
"dev-workspace-2" = "ws-ws-anonymized"
"dev-workspace-3" = "ws-ws-anonymized"
"test-workspace-1" = "ws-ws-anonymized"
"prod-workspace-1" = "ws-ws-anonymized"
}
私の問題は、この文字列のマップを取得してフィルター処理し、キーに「dev-workspace」を含むものだけを返す必要があることです。私は次のようなことを試しました:
resource "tfe_variable" "dev-workspace" {
for_each = contains(data.tfe_workspace_ids.all.ids, "dev-workspace")
key = "access_key"
value = "XXXX"
category = "terraform"
workspace_id = each.value
sensitive = true
description = "AWS IAM secret access key."
}
contains
しかし、次のようにこの方法で使用できるようには見えませんfor_each
:
Error: Error in function call
on main.tf line 16, in resource "tfe_variable" "dev-workspace":
16: for_each = contains(data.tfe_workspace_ids.all.ids, "dev-workspace")
|----------------
| data.tfe_workspace_ids.all.ids is map of string with 284 elements
Call to function "contains" failed: argument must be list, tuple, or set.
ここで何をすべきかよくわかりませんが、これをいくつかの方法で試しましたが、わかりません。助けてくれてありがとう。