我应该使用 user_data 还是 Ansible 配置我的 EC2

should I configure my EC2 using user_data or Ansible

使用 Terraform(或云形成)启动 EC2 时,我们可以通过在 user_data/remote-exec 中放置一些脚本来配置 EC2。或者,我们可以使用 Ansible/Chef 等配置 EC2。在 user_data/remote-exec 中配置 EC2 与使用 Ansible/Chef 有什么区别?什么时候用前者,什么时候用后者(我知道Ansible/Chef是幂等的)?

在我的例子中,EC2 最初是手动启动的,然后使用大量 linux 命令手动配置。并且这些命令不是我配置的。现在我负责使用 Terraform 自动化整个结构,并配置 EC2。使用 user_data/remote-exec 配置 EC2 非常简单。我只需要将他们现有的所有 linux 命令放在一些脚本中,稍作改动即可。如果使用我的脚本配置结果不成功,至少我可以通过比较我的脚本和原始的 linux 命令来快速找出是否遗漏了一些命令。但是如果我使用 ansible/chef,我必须使用不同的语言重写所有步骤。如果配置不符合预期,我很难找出哪些步骤不正确,因为 ansible/chef 和 linux 命令的语法完全不同。

我的问题是,就我而言,我应该使用 ansible/chef 还是 user_data/remote-exec 进行配置?

用户数据有利于系统的初始配置。如果您需要长期维护,像 Ansible/Chef/Salt/Puppet 这样的配置管理软件是一个不错的选择。

Packer 可用于不可变的基础架构,即创建后不会更改。您可以 运行 系统上的所有脚本和安装以使其准备好启动,这也更快,因为您不必等待用户数据 运行。

还有几个问题你要问,你多久打一次补丁?您是要更新现有的还是替换为新的。 Ansible 非常适合配置,因为它只是 yaml 文件

Blue/Green deployments 通常将服务器更换为所有新服务器,并逐渐将流量转移到新服务器上。

Some more things to consider with your Infrastructure as code