问题描述
在创建一个 Terraform 文件时,遇到了问题:
Error: Incorrect condition type on ssh.tf line 47, in locals: 47: is_generated = data.local_sensitive_file.public_key ? true : false ├──────────────── │ data.local_sensitive_file.public_key is object with 4 attributesThe condition expression must be of type bool.
但我不知道如何查找 data.local_sensitive_file.public_key
的属性是什么。
解决方案
请注意以下操作可能涉及命令行工具,确保已安装相应工具。
方案1
你可以使用以下命令来查找 data.local_sensitive_file.public_key
的属性:
terraform show -json | jq '.values[].resources[] | select(.address=="data.local_sensitive_file.public_key").values | keys'
这个命令将返回以下属性列表:
[
"content",
"content_base64",
"filename",
"id"
]
方案2
另一种方法是查阅 Terraform 提供者文档,找到与 data.local_sensitive_file.public_key
相关的信息。你可以在 hashicorp/local 的文档 中找到有关 local_sensitive_file
数据源的属性描述。
方案3
如果你想更通用地了解任何对象的属性类型,可以使用 terraform console
命令来查询:
> type(data.local_sensitive_file.public_key)
object({
content: string,
content_base64: string,
filename: string,
id: string,
})
需要注意的是,对于资源(无论是 resource
块还是 data
块),直到创建或首次读取之前,它的类型还未知。如果你的配置不合法,你需要先修复配置,使之能够成功执行 terraform apply
,然后才能使用这种技巧。但对于在 Terraform 配置中定义的对象(而不是由尚未运行的外部操作定义的对象),控制台是一种有用的检查数据和数据类型的方式。
请根据你的需求选择适合的方法来查找 Terraform 对象的属性。
以上方案可能涉及命令行操作和工具的使用,请确保在执行操作前已充分了解和理解相应命令的含义和效果。
正文完