Terraform 地形模板-如何使用双花括号

Terraform 地形模板-如何使用双花括号,terraform,Terraform,谁知道我怎么用 NAME_TEMPLATE=%{{service_name}}.%{{environment_name}} 在模板文件中? 每次我想使用这个地形时-“%!s()”都会崩溃 我成功地用“%”转义了“%”,但双大括号仍然是个问题。我使用Terraform 0.11模板生成docker-compose.yml,以供rancher 1使用。 这是非常过时和特殊的,但可能有人从中受益 所以我想得到 NAME_TEMPLATE=%{{service_name}}.%{{environmen

谁知道我怎么用

NAME_TEMPLATE=%{{service_name}}.%{{environment_name}}
在模板文件中? 每次我想使用这个地形时-“%!s()”都会崩溃


我成功地用“%”转义了“%”,但双大括号仍然是个问题。

我使用Terraform 0.11模板生成docker-compose.yml,以供rancher 1使用。 这是非常过时和特殊的,但可能有人从中受益

所以我想得到

NAME_TEMPLATE=%{{service_name}}.%{{environment_name}}
进入我的docker-compose.yml

首先,我让模板引擎处理yaml,因为还有其他变量需要填充:

地形模板

data "template_file" "route53updater" {
  template = "${file("${local.templates_path}/docker-compose.yml")}"

  vars {
    aws_access_key = "${var.aws_access_key}"
    aws_secret_key = "${var.aws_secret_key}"
    aws_domain = "${var.instance_tld}"
    aws_zone_id = "${var.aws_zone_id}"
    aws_region = "${var.aws_region}"    
  }
}
变成:

version: '2'
services:
  route53:
    mem_limit: 134217728
    image: rancher/external-dns:v0.7.12
    environment:
      AWS_ACCESS_KEY: SECRET
      AWS_REGION: eu-central-1
      AWS_SECRET_KEY: SECRET
      ROOT_DOMAIN: domain.com
      ROUTE53_ZONE_ID: SECRET
      NAME_TEMPLATE: "NAME_TEMPLATE_VALUE"
      TTL: '60'
    expose:
    - '1000'
    labels:
      io.rancher.container.agent.role: external-dns
      io.rancher.container.create_agent: 'true'
然后我使用replace内联编辑模板内容,如下所示:

resource "rancher_stack" "route53" {
  name           = "route53"  
  environment_id = "${var.rancher_environment}"
  scope          = "system"
  start_on_create = true
  docker_compose = "${replace("${data.template_file.route53updater.rendered}", "NAME_TEMPLATE_VALUE", "%{{`{{service_name}}`}}.%{{`{{environment_name}}`}}")}"
  rancher_compose = "${file("${local.templates_path}/rancher-compose.yml")}"  
}

因此,它用
{{{{{service{u NAME}}}}.%%{{{{environment{environment}}}}}}}替换
NAME\u TEMPLATE\u VALUE
我使用Terraform 0.11模板生成docker-compose.yml供rancher 1使用。 这是非常过时和特殊的,但可能有人从中受益

所以我想得到

NAME_TEMPLATE=%{{service_name}}.%{{environment_name}}
进入我的docker-compose.yml

首先,我让模板引擎处理yaml,因为还有其他变量需要填充:

地形模板

data "template_file" "route53updater" {
  template = "${file("${local.templates_path}/docker-compose.yml")}"

  vars {
    aws_access_key = "${var.aws_access_key}"
    aws_secret_key = "${var.aws_secret_key}"
    aws_domain = "${var.instance_tld}"
    aws_zone_id = "${var.aws_zone_id}"
    aws_region = "${var.aws_region}"    
  }
}
变成:

version: '2'
services:
  route53:
    mem_limit: 134217728
    image: rancher/external-dns:v0.7.12
    environment:
      AWS_ACCESS_KEY: SECRET
      AWS_REGION: eu-central-1
      AWS_SECRET_KEY: SECRET
      ROOT_DOMAIN: domain.com
      ROUTE53_ZONE_ID: SECRET
      NAME_TEMPLATE: "NAME_TEMPLATE_VALUE"
      TTL: '60'
    expose:
    - '1000'
    labels:
      io.rancher.container.agent.role: external-dns
      io.rancher.container.create_agent: 'true'
然后我使用replace内联编辑模板内容,如下所示:

resource "rancher_stack" "route53" {
  name           = "route53"  
  environment_id = "${var.rancher_environment}"
  scope          = "system"
  start_on_create = true
  docker_compose = "${replace("${data.template_file.route53updater.rendered}", "NAME_TEMPLATE_VALUE", "%{{`{{service_name}}`}}.%{{`{{environment_name}}`}}")}"
  rancher_compose = "${file("${local.templates_path}/rancher-compose.yml")}"  
}
因此,它将
NAME\u TEMPLATE\u VALUE
替换为
%{{{{{{service\u NAME}}}}}.%{{{{{{environment\u NAME}}}}}}