看起来我可以使用模板文件或 "remote-exec" provisioner 的内联命令来引导启动,它们都可以使用 user_data
。那么哪一个更符合惯用语呢?
看起来我可以使用模板文件或 "remote-exec" provisioner 的内联命令来引导启动,它们都可以使用 user_data
。那么哪一个更符合惯用语呢?
user_data
。 用户数据字段是惯用语,因为它是AWS原生的,而远程执行提供程序是特定于Terraform的,这只是调用AWS API的众多方法之一。我同意Josh的说法,如果实例没有运行时更改,您可以使用packer构建ami,然后在启动配置中使用它。这样,您就不必等待用户数据运行。
Packer是Hashicorp工具系列的一部分。
它完全基于条件和场景。
情况:当您在自动缩放组中主要使用模板时,应使用user_data。由于所有新启动的实例都将使用相同的初始化脚本启动,因此还有一个好处,您实际上可以在AWS控制台日志中查看输出。
情况:当您正在启动新实例并且一旦它启动后,您的配置管理工具运行或使用模板工具时。
provisioner "remote-exec" {
inline = [
"puppet apply",
"consul join ${aws_instance.web.private_ip}",
]
}
user_data
也是适用的,因为它可以包含在启动配置中。因此,使用user_data
可以使静态实例和自动扩展实例保持一致性。 - Martin Atkins