【问题标题】:Terraform workspaces creationTerraform 工作空间创建
【发布时间】:2021-11-24 12:14:06
【问题描述】:

我正在尝试编写一个用于创建工作空间的 terraform 代码,并将在未来的创建中使用相同的代码。我在引用 bundle_ids 时遇到了一个问题,因为有多个可用的捆绑包,并且它会根据请求而变化。每一次。如果有人可以提出更好的方法来解决这个问题。

resource "aws_workspaces_workspace" "this" {

directory_id = var.directory_id

for_each = var.workspace_user_names

user_name = each.key
bundle_id = [local.bundle_ids["${each.value}"]]
root_volume_encryption_enabled = true
user_volume_encryption_enabled = true
volume_encryption_key          = var.volume_encryption_key
workspace_properties {
user_volume_size_gib                      = 50
root_volume_size_gib                      = 80
running_mode                              = "AUTO_STOP"
running_mode_auto_stop_timeout_in_minutes = 60
}
tags = var.tags
}

terraform.tfvars

directory_id          = "d-xxxxxxx"
##Add the Workspace Username & bundle_id; 
workspace_user_names = {
"User1"  = "n"
"User2"  = "y"
"User3"  = "k"
}

locals.tf

locals {
bundle_ids = {
"n" = "wsb-nn"
"y" = "wsb-yy"
"k" = "wsb-kk"
 }
}

地形规划

Error: Incorrect attribute value type
│
│   on r_aws_workspaces.tf line 8, in resource "aws_workspaces_workspace" "this":
│    8:   bundle_id = [local.bundle_ids["${each.value}"]]
│     ├────────────────
│     │ each.value will be known only after apply
│     │ local.bundle_ids is object with 3 attributes
│
│ Inappropriate value for attribute "bundle_id": string required.

【问题讨论】:

  • 我还注意到您的几乎所有问题都有答案,但没有一个被接受。接受好的答案不仅是一种好习惯,而且可以减少重复的次数并增加您的问题得到实际回答的机会。

标签: amazon-web-services terraform terraform-provider-aws


【解决方案1】:

在运动中你有一个list,但它应该是string。假设其他一切都是正确的,以下应该解决您的错误:

bundle_id = local.bundle_ids[each.value]

【讨论】:

  • 它确实修复了错误;但是从更大的背景来看,是否有更好的方法来做到这一点。即编写模块,然后调用它们或其他任何东西。
  • @Zuntoo 如果我的回答有帮助,我们将不胜感激。我建议对具有相关详细信息的模块提出新问题。
猜你喜欢
  • 2021-05-15
  • 2023-01-07
  • 2021-12-27
  • 2019-03-07
  • 2021-05-13
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2019-11-13
相关资源
最近更新 更多