AWS CloudFormation 配置... UserData 与 Ansible 之类的?

AWS CloudFormation provisioning... UserData vs. Ansible or the likes?

使用 AWS CloudFormation UserData 与 Ansible 进行配置之间有何区别?

我知道,例如,就 Puppet 而言,它会强制执行配置规则,即使已完成更改(将其改回以反映清单)。

但是还有更多值得考虑的差异吗?

简短的回答是:使用 CloudFormation 或 Terraform

Ansible 是一个用于许多不同目的的配置管理工具。与许多其他工具最显着的区别是,它以推送模式工作,因此远程服务器上没有代理轮询更改。 当它涉及安装包、创建文件等时,它很棒。

CloudFormation 旨在创建 AWS 环境。如果您只使用亚马逊而不使用其他任何东西,这很好。

Ansible 可以完成这项工作,但我建议使用 CloudFormation 或 Terraform 等工具。用于此的 Ansible 模块没问题,但像 Terraform 这样的工具专注于创建环境,并且在完成工作时它们更加智能。

澄清一下,"UserData" 是 EC2 实例的一部分,而不是 CloudFormation 本身的一部分。可以使用 User Data, which can be used by the AMI to perform dynamic operations on startup. If CloudFormation is used to launch an EC2 instance, it can provide User Data to the EC2 instance by setting the UserData property on the AWS::EC2::Instance 资源启动 EC2 实例。

通常,用户数据由 Cloud-Init, and is typically formatted as a simple User-Data Script 处理,这只是一个 shell 脚本,在实例首次启动时被调用。

也就是说,'Shell script vs. Ansible' 是一个 apples-to-oranges 比较。 Ansible 是否适合您的 use-case 取决于您是否需要使用 Ansible 内置的额外抽象层与标准 shell 脚本来提供实例所需的内容。阅读 Ansible Documentation 并自行决定。

值得一提的是,除了 运行ning Ansible 的正常 'push' 方法通过 SSH 提供您的实例外,您还可以 运行 Ansible 倒置,'Ansible-pull' 模式,使用 User-Data 脚本在 EC2 实例上执行初始 'bootstrap' 安装。