我正在将我的 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 将值放在一起,但后来我得到了数据类型错误。现在,看起来我在这里循环。
有没有人在这里给我任何指示?