amazon-web-services - 无法配置 terraform 动态块
问题描述
我试图通过将值传递给动态块来创建 aws_workspace_workspaces 但它没有从那里获取值。主要目的是自动将价值分配给资源。它显示了这个错误
on modules/aws_workspace/main.tf line 4, in resource "aws_workspaces_workspace" "example": │ 4: dynamic "aws_workspace" { │ │ Blocks of type "aws_workspace" are not expected here.
开发者.tfvars
aws_workspace={
user_name = "john.doe"
root_volume_encryption_enabled = true
user_volume_encryption_enabled = true
volume_encryption_key = "alias/aws/workspaces"
workspace_properties = {
compute_type_name = "VALUE"
user_volume_size_gib = 10
root_volume_size_gib = 80
running_mode = "AUTO_STOP"
running_mode_auto_stop_timeout_in_minutes = 60
}
}
tags = {
Department = "IT"
}
resource "aws_workspaces_workspace" "example" {
directory_id = var.directory_id
bundle_id = var.bundle_id
dynamic "aws_workspace" {
for_each = var.aws_workspace
content {
user_name = aws_workspace.value.user_name
root_volume_encryption_enabled = aws_workspace.value.root_volume_encryption_enabled
user_volume_encryption_enabled = aws_workspace.value.user_volume_encryption_enabled
volume_encryption_key = aws_workspace.value.volume_encryption_key
workspace_properties {
compute_type_name = aws_workspace.value.compute_type_name
user_volume_size_gib = aws_workspace.value.user_volume_size_gib
root_volume_size_gib = aws_workspace.value.root_volume_size_gib
running_mode = aws_workspace.value.running_mode
running_mode_auto_stop_timeout_in_minutes = aws_workspace.value.running_mode_auto_stop_timeout_in_minutes
}
}
}
tags = {
Department = "IT"
}
}
因此,如果我将值传递给另一个用户,它也会创建它,这就是我试图实现的基本目标
module "my_workspaces" {
source = "./modules/workspaces"
hosts = {
"user1" = {
"user_name" = "user1.last1",
"compute_type_name" = var.compute_type_name
"user_volume_size_gib" = var.user_volume_size_gib,
"root_volume_size_gib" = var.root_volume_size_gib,
"running_mode" = var.running_mode,
"running_mode_auto_stop_timeout_in_minutes" = var.auto_stop_timeout_min
},
"user2" = {
"user_name" = "user2.last2",
"compute_type_name" = var.compute_type_name
"user_volume_size_gib" = var.user_volume_size_gib,
"root_volume_size_gib" = var.root_volume_size_gib,
"running_mode" = var.running_mode,
"running_mode_auto_stop_timeout_in_minutes" = var.auto_stop_timeout_min
},
}
}
解决方案
aws_workspaces_workspace 中没有 aws_workspace 这样的块。您应该for_each
直接使用:
resource "aws_workspaces_workspace" "example" {
directory_id = var.directory_id
bundle_id = var.bundle_id
for_each = var.aws_workspace
user_name = each.value.user_name
root_volume_encryption_enabled = each.value.root_volume_encryption_enabled
user_volume_encryption_enabled = each.value.user_volume_encryption_enabled
volume_encryption_key = each.value.volume_encryption_key
workspace_properties {
compute_type_name = each.value.compute_type_name
user_volume_size_gib = each.value.user_volume_size_gib
root_volume_size_gib = each.value.root_volume_size_gib
running_mode = each.value.running_mode
running_mode_auto_stop_timeout_in_minutes = each.value.running_mode_auto_stop_timeout_in_minutes
}
tags = {
Department = "IT"
}
}
推荐阅读
- python - 步骤而不是时代的学习率回调?
- python - 在给定 y 值的轮廓上查找点
- java - 一行正好n个数字
- mysql - 相同的数据库结构和索引,但查询速度和解释结果不同
- awk - AWK 用前一行的列值替换空列
- parsing - 如何将动态图中的数据点提取到文本文件?(数据包装器/html/json)
- android - 关于 Android Studio 中应用标题和按钮背景颜色的问题
- c++ - 如何将 Google Mock 添加到已经有 Google Test 的项目中?
- python - 如何将 xticks 更改为仅几个月?
- hive - 如何进行 Hive SQL IF/ELSE 查询?