在 user_data.tpl 文件中使用 tf 变量

问题描述 投票:0回答:1

我正在使用 terraform 部署 eks 集群,为了启动 eks 托管节点组的节点,我定义了一个 user_data.tpl 文件。

eks_managed_node_groups = {
"${var.cluster_name}_managed_node_group" = {
  ami_release_version           = var.ami_version
  create_launch_template        = true
  launch_template_name          = var.launch_template_name
  user_data_template_path       = "./user_data.tpl"
...

在 user_data 文件中,我尝试从 artifactorycloud 下载 .zip 文件,为此我需要传递用户名和密码: sudo wget --http-user=${USERNAME} --http-password=${PASSWORD} https://artifactorycloud.mypage.com/artifactory/l-generic-agent-binaries/splunk-agent/aws/latest /AWS_NIX_latest_UF.zip

我已经创建了这些变量并为它们添加了值。

    variable "USERNAME" {
  description = "Username for artifactorycloud"
  type        = string
}

variable "PASSWORD" {
  description = "Password for artifactorycloud"
  type        = string
}

但似乎这些值并未在 user_data.tpl 中被获取

我怎样才能做到这一点? 我将不胜感激您的帮助。

variables terraform amazon-eks
1个回答
0
投票

正如 Chris Doyle 在他的评论中所写,您可能应该使用

templatefile
内置函数。但是,看起来这些是环境变量。如果需要以相同的方式引用它们,则需要在前面使用双
$
符号:

 sudo wget --http-user=$${USERNAME} --http-password=$${PASSWORD} https://artifactorycloud.mypage.com/artifactory/l-generic-agent-binaries/splunk-agent/aws/latest/AWS_NIX_latest_UF.zip

如果您决定使用

templatefile
函数,该部分代码应类似于:

eks_managed_node_groups = {
"${var.cluster_name}_managed_node_group" = {
  ami_release_version           = var.ami_version
  create_launch_template        = true
  launch_template_name          = var.launch_template_name
  user_data_template_path       = templatefile("${path.root}/user_data.tpl", {
   USERNAME = var.USERNAME
   PASSWORD = var.PASSWORD
})
...
© www.soinside.com 2019 - 2024. All rights reserved.