terraform替换json中的变量

Cha*_*Zee 6 amazon-rds terraform terraform-provider-aws

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

options = [
   {
    option_name = "SQLSERVER_BACKUP_RESTORE"

    option_settings=[
      {
      name  = "IAM_ROLE_ARN"
      value = "${role_arn}"
    },
  ]
},
Run Code Online (Sandbox Code Playgroud)

我想替换 main.tf 中的“${role_arn}”变量。任何人都可以帮助解决语法问题吗?

小智 12

我使用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}"
        },
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

更改后您将看到类似以下内容:

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
}
Run Code Online (Sandbox Code Playgroud)