如何在Terraform中为模板和文本文件设置变量 适配多环境部署需求
多环境适配实现方案
- 第一步:修改FTL模板,替换硬编码URL为变量占位符
修改email-passwordless.ar.html.ftl内容,将固定的基础地址替换为自定义变量:
[#setting url_escaping_charset="UTF-8"] [#assign url = "${authBaseUrl}/${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>
- 第二步:修改Terraform资源配置,使用
templatefile渲染模板并传值
将原有file函数替换为支持变量注入的templatefile函数,将不同环境的URL作为参数传入模板:
# 注:原资源名"passwrodless_template"为拼写错误,已修正为passwordless_template resource "fusionauth_email" "passwordless_template" { name = var.passwordless_email_template_name localized_subjects = { "ar" = var.email_passwordless_localized_subjects } localized_html_templates = { "ar" = templatefile("${path.module}/email-templates/email-passwordless.ar.html.ftl", { authBaseUrl = var.auth_base_url }) } }
- 第三步:新增环境变量定义
在variables.tf中新增对应变量,不同环境部署时传入对应环境的URL值即可:
variable "auth_base_url" { type = string description = "无密码登录验证服务的基础URL,不同环境取值不同" # 可按需设置对应环境的默认值,例如测试环境默认值: # default = "https://google.com/auth/test" }
如果存在多语言版本的同类模板,只需要给每个语言模板的templatefile函数都传入相同的authBaseUrl参数即可,无需重复修改硬编码地址。
内容的提问来源于stack exchange,提问作者cloudbud
相关产品推荐
相关产品推荐

