如何在 Terraform 中对模板和文本文件进行变量化

我有这个模板名为:email-passwordless.ar.html.ftl

其内容如下:

[#setting url_escaping_charset="UTF-8"]
[#assign url = "https://google.com/auth/prod/${code}" /]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="ar" dir="rtl">
<head>

使用此模板的资源是:

resource "fusionauth_email" "passwrodless_template" {
  name                  = var.passwordless_email_template_name
  localized_subjects = {
    "ar" = var.email_passwordless_localized_subjects
  }
  localized_html_templates = {
    "ar" = file("${path.module}/email-templates/email-passwordless.ar.html.ftl")
  }
}

该模板将在不同的环境中使用,因此每个环境的 URL 都不同。如何将模板中的 URL 作为变量并将其值传递给资源或类似的东西

stack overflow How can I variablize a template and text file in Terraform
原文答案
author avatar

接受的答案

对于这个用例,您将使用 templatefile function 。您可以在与当前文件相同的路径中创建 email-passwordless.ar.html.tmpl 文件:

[#setting url_escaping_charset="UTF-8"]
[#assign url = "${url}" /]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="ar" dir="rtl">
<head>

我们将您已经命名的字符串类型变量 code 替换为整个 url 的 url 。在 Terraform 配置中为 var.url 赋值后,它的值可以通过 templatefile 函数参数传递给模板渲染器:

localized_html_templates = {
  "ar" = templatefile("${path.module}/email-templates/email-passwordless.ar.html.tmpl", { url = var.url })
}

答案: