提问人:Pugs08 提问时间:8/18/2022 最后编辑:chicksPugs08 更新时间:4/23/2023 访问量:2143
Terraform 启动脚本对 AWS 来说太长:预期user_data长度在 (1 - 16384) 范围内,得到 #!/bin/bash
Terraform Launch Script too long for AWS: expected length of user_data to be in the range (1 - 16384), got #!/bin/bash
问:
我正在使用一个模块创建一个自动扩展组,该组启动实例并为它们提供要运行的启动脚本。启动脚本相对简单,只需几个 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 存储桶并在启动脚本期间从存储桶中抓取,我认为这是一种选择。
答:
1赞
paulg
8/18/2022
#1
您可以在 VCS 中拥有该文件,例如 git。然后,可以在用户数据中克隆或签出存储库。当然,这意味着您可以正确访问映像上的VCS,如果您使用的是自定义AMI,那么您可以将文件烘焙到AMI中,当它启动时,您可以在启动脚本中运行任何其他内容。
0赞
Eytan Naim
4/23/2023
#2
您可以使用 zipped :userdata
resource "aws_instance" "example" {
ami = "ami-xxx"
...
user_data = base64gzip("#!/bin/bash\necho 'Hello, World!' | tee /tmp/hello-world.txt")
}
评论