gpt4 book ai didi

terraform - 如何将多个模板文件传递给 terraform 中的 user_Data 变量

转载 作者:行者123 更新时间:2023-12-03 23:34:31 24 4
gpt4 key购买 nike

将多个模板文件分配给 user_Data 变量。
由于某些架构模式,我们不想将此模板合并到单个文件中。

我是 terraform 的新手,所以在这方面很挣扎。

data "template_file" "userdata_lin1" {
template = <<EOF
#!/bin/bash
crontab cronjobfileremote
EOF
}

data "template_file" "userdata_lin2" {
template = <<EOF
#!/bin/bash
echo "hello"
EOF
}

user_data = "${data.template_file.user_data1.rendered}"

最佳答案

大多数云平台的基本约束是“用户数据”或“自定义元数据”等(术语因供应商而异)是单个不透明的字节串。这些字节的解释取决于您在虚拟机镜像中安装的使用它的软件。

此类软件的常见选择是 cloud-init .如果您正在使用 cloud-init然后可以在a number of different formats中提供“用户数据” .

cloud-init 提供多个不同部分的主要方式是通过 a MIME-Multipart archive ,它是穿插在 header 中的几个值的串联,以允许 cloud-init 识别边界并了解您打算如何解释每个部分。

因为 cloud-init是一种非常常见的用于解释“用户数据”的软件选择,Terraform 有 a cloudinit provider其中包括 a data source for constructing a MIME-Multipart archive .

data "cloudinit_config" "example" {
gzip = false
base64_encode = false

part {
content_type = "text/x-shellscript"
filename = "userdata_lin1"
content = <<-EOF
#!/bin/bash
crontab cronjobfileremote
EOT
}

part {
content_type = "text/x-shellscript"
filename = "userdata_lin2"
content = <<-EOF
#!/bin/bash
echo "hello"
EOT
}
}

然后您可以设置您的 user_data此数据源输出的参数:
  user_data = data.cloudinit_config.example.rendered

需要注意的是,从 Terraform 和您的云计算提供商的角度来看, user_data 的内容只是一个任意字符串。通过阅读 cloud-init,必须在目标操作系统本身内调试处理字符串中的任何问题。记录以查看它如何解释配置以及尝试采取这些操作时发生了什么。

关于terraform - 如何将多个模板文件传递给 terraform 中的 user_Data 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62067211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com