AWS 的 Terraform 启动脚本太长:user_data 的预期长度在范围 (1 - 16384) 内,得到 #!/bin/bash

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

我正在使用一个模块来创建一个自动缩放组,该组启动实例并为它们提供要运行的启动脚本。启动脚本比较简单,就是几个apt gets/installs,创建一个用户,写一些文件。问题是我们正在编写的文件之一超过 600 行。这以错误

Error: expected length of user_data to be in the range (1 - 16384), got #!/bin/bash
结束,然后是整个启动脚本。

我们通过 cat 管道写入文件,即

cat > example.txt <<EOF

This is an example

EOF

我相当确信这是由于启动脚本太大所致。 aws 的最大值似乎是 16kb,而我的目前是 20kb。你们中有人知道解决这个问题的方法吗?我无法将文件放入 s3 存储桶并在启动脚本期间从存储桶中抓取,我认为这是一种选择。

bash amazon-web-services terraform eof cat
2个回答
1
投票

你可以在你的 VCS 中有这个文件,比如 git。然后您可以克隆或检查您的用户数据中的回购协议。当然,这意味着您可以正确访问图像上的 VCS,如果您使用的是自定义 AMI,那么您可以将文件烘焙到 AMI 中,当它启动时,您可以运行启动时需要的任何其他内容脚本。


0
投票

您可以使用压缩的

userdata

resource "aws_instance" "example" {
  ami           = "ami-xxx"
...
  user_data = base64gzip("#!/bin/bash\necho 'Hello, World!' | tee /tmp/hello-world.txt")
}
© www.soinside.com 2019 - 2024. All rights reserved.