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



我正在使用一个模块来创建一个自动缩放组,该组可以旋转实例并为它们提供运行的启动脚本。启动脚本相对简单,只需几个apt获取/安装、创建用户和编写一些文件。问题是,我们正在编写的一个文件超过了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存储桶并从存储桶中抓取,我认为这是一种选择。

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

您可以使用压缩userdata:

resource "aws_instance" "example" {
ami           = "ami-xxx"
...
user_data = base64gzip("#!/bin/bashnecho 'Hello, World!' | tee /tmp/hello-world.txt")
}

最新更新