terraform替换json中的变量



我正在使用terraform创建rds服务器。我使用列表变量传递选项组。选项将variable.tf中的变量分组,如下

options = [
{
option_name = "SQLSERVER_BACKUP_RESTORE"
option_settings=[
{
name  = "IAM_ROLE_ARN"
value = "${role_arn}"
},
]
},

我想把"${role_arn}";main.tf中的变量。有人能帮上语法吗?

我使用terraform模板文件解决了这类问题。

  1. 将json移动到一个单独的文件中
  2. 更新yout-json以使用Terraform模板语法
  3. 添加数据资源来渲染和解析模板
  4. 在资源中引用渲染的模板

假设您需要以下内容:

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 })
}

相关内容

  • 没有找到相关文章

最新更新