我正在处理一个情况,需要在启动时为EC2实例提供一些软件包。存在几个(企业/公司)限制:
- 我需要在特定AMI之上进行配置,该AMI添加了诸如LDAP / AD访问等企业级功能 - 这些更改旨在用于所有内部开发机器
主要由于第二个限制,我想知道放置配置的最佳位置。这是我想出的:
- 在Terraform中进行配置:只需在必要的实例中进行配置即可。如果将这些资源打包到模块中,则配置不会“泄漏”。缺点是无法在模块之上添加不同的配置步骤?配置更改可能会导致实例被销毁并重新应用?由于它试图安装的软件包,配置需要很长时间。 - 在Packer中进行配置:基于假设,Packer允许您在AMI之上进行配置,以便可以“扩展”AMI。此外,这仅用于AWS,因此不一定使用其他生成器。在Packer中进行配置使得Terraform代码更简单,并且terraform应用程序将变得更快,因为它只是启动的AMI。
- 我需要在特定AMI之上进行配置,该AMI添加了诸如LDAP / AD访问等企业级功能 - 这些更改旨在用于所有内部开发机器
主要由于第二个限制,我想知道放置配置的最佳位置。这是我想出的:
- 在Terraform中进行配置:只需在必要的实例中进行配置即可。如果将这些资源打包到模块中,则配置不会“泄漏”。缺点是无法在模块之上添加不同的配置步骤?配置更改可能会导致实例被销毁并重新应用?由于它试图安装的软件包,配置需要很长时间。 - 在Packer中进行配置:基于假设,Packer允许您在AMI之上进行配置,以便可以“扩展”AMI。此外,这仅用于AWS,因此不一定使用其他生成器。在Packer中进行配置使得Terraform代码更简单,并且terraform应用程序将变得更快,因为它只是启动的AMI。
对我来说,这两种方法都有它们的用处。但我真正想知道的是,在什么情况下选择Packer配置而不是Terraform配置?