Terraform - 我应该使用user_data或provisioner来引导资源吗?

Chr*_*ris 9 cloud provisioning terraform devops

看起来我可以使用user_data模板文件或provisioner带有内联命令的"remote-exec" 来引导.那么哪一个被认为更惯用?

Jos*_*ick 16

你应该用user_data.该用户数据字段是地道的,因为它是原产于AWS,而远程EXEC供应者是具体对terraform,这只是众多方法来调用API AWS一个.

此外,用户数据可在AWS控制台中查看,并且通常是在AWS中使用Auto Scaling组的重要部分,您希望每个EC2实例在启动时执行相同的配置代码.使用Terraform的远程执行程序配置程序是不可能的.

  • 除此之外,使用`user_data`在使用自动缩放时也适用,因为它可以包含在启动配置中.因此,使用`user_data`可以在静态实例和自动扩展实例之间提供一致性. (2认同)

str*_*gjz 5

虽然我同意 Josh,但如果实例没有运行时更改,您可以使用 packer 构建一个 ami,然后在启动配置中使用它。这样您就不必等待用户数据运行。

Packer 是 Hashicorp 工具系列的一部分

https://www.packer.io/docs/builders/amazon-ebs.html