如何在 Terraform 中可变化模板和文本文件

How can I variablize a template and text file in 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 作为变量并将其值传递到资源或类似的东西中

对于此用例,您将使用 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>

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

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