【发布时间】:2020-10-21 15:35:20
【问题描述】:
我正在将我的 0.11 代码转换为 0.12。大多数事情似乎进展顺利,但我真的迷失在 SSM 文档上。
在我的 0.11 代码中,我有这个代码:
resource "aws_ssm_document" "ssm_document" {
name = "ssm_document_${terraform.workspace}${var.addomainsuffix}"
document_type = "Command"
content = <<DOC
{
"schemaVersion": "1.0",
"description": "Automatic Domain Join Configuration",
"runtimeConfig": {
"aws:domainJoin": {
"properties": {
"directoryId": "${aws_directory_service_directory.microsoftad-lab.id}",
"directoryName": "${aws_directory_service_directory.microsoftad-lab.name}",
"dnsIpAddresses": [
"${aws_directory_service_directory.microsoftad-lab.dns_ip_addresses[0]}",
"${aws_directory_service_directory.microsoftad-lab.dns_ip_addresses[1]}"
]
}
}
}
}
DOC
depends_on = ["aws_directory_service_directory.microsoftad-lab"]
}
这工作得相当好。但是,Terraform 0.12 不接受这个代码,说
这个值没有任何索引。
我一直在尝试在网上查找不同的解决方案,但我遇到了数不清的数据类型问题。例如,我见过的解决方案之一是这样提出的:
"dnsIpAddresses": [
"${sort(aws_directory_service_directory.oit-microsoftad-lab.dns_ip_addresses)[0]}",
"${sort(aws_directory_service_directory.oit-microsoftad-lab.dns_ip_addresses)[1]}",
]
}
我得到了
InvalidDocumentContent:JSON 格式不正确
这对我来说有点奇怪,因为如果我查看跟踪日志,我似乎得到了相对正确的值:
{"Content":"{\n \"schemaVersion\": \"1.0\",\n \"description\": \"Automatic Domain Join Configuration\",\n \"runtimeConfig\": {\n \"aws:domainJoin\": {\n \"properties\": {\n \"directoryId\": \"d-9967245377\",\n \"directoryName\": \"012mig.lab\",\n \"dnsIpAddresses\": [\n \"10.0.0.227\",\n
\"10.0.7.103\",\n ]\n }\n }\n }\n}\n \n","DocumentFormat":"JSON","DocumentType":"Command","Name":"ssm_document_012mig.lab"}
我已尝试使用 concat 和 list 将值放在一起,但随后出现数据类型错误。现在,看来我在这里循环。
这里有人给我指路吗?
【问题讨论】:
标签: amazon-web-services terraform terraform-provider-aws terraform0.12+