我正在使用terraform创建rds服务器。我使用列表变量传递选项组。选项将variable.tf中的变量分组,如下
options = [
{
option_name = "SQLSERVER_BACKUP_RESTORE"
option_settings=[
{
name = "IAM_ROLE_ARN"
value = "${role_arn}"
},
]
},
我想把"${role_arn}";main.tf中的变量。有人能帮上语法吗?
我使用terraform模板文件解决了这类问题。
- 将json移动到一个单独的文件中
- 更新yout-json以使用Terraform模板语法
- 添加数据资源来渲染和解析模板
- 在资源中引用渲染的模板
假设您需要以下内容:
resource "provider_resource" "name" {
property = "value"
options = [
{
option_name = "SQLSERVER_BACKUP_RESTORE"
option_settings = [
{
name = "IAM_ROLE_ARN"
value = "${role_arn}"
},
]
}
]
}
更改后,您将得到以下内容:
data "template_file" "json_template" {
template = file("path/to/file.json")
vars = {
role_arn = var.dynamic_value
}
}
resource "provider_resource" "name" {
property = "value"
options = data.template_file.json_template.rendered
}
在template_file方法的基础上,templatefile
函数允许以最小的冗长性来实现这一点:
resource "provider_resource" "name" {
property = "value"
options = templatefile("path/to/file.json", { role_arn = var.dynamic_value })
}