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