【发布时间】:2017-07-02 21:51:02
【问题描述】:
使用 AWS CloudFormation UserData 与 Ansible 进行预置有什么区别?
我知道,以 Puppet 为例,即使更改完成(将其更改回以反映清单),它也会强制执行配置规则。
但是还有更多值得考虑的差异吗?
【问题讨论】:
标签: amazon-web-services ansible provisioning amazon-cloudformation terraform
使用 AWS CloudFormation UserData 与 Ansible 进行预置有什么区别?
我知道,以 Puppet 为例,即使更改完成(将其更改回以反映清单),它也会强制执行配置规则。
但是还有更多值得考虑的差异吗?
【问题讨论】:
标签: amazon-web-services ansible provisioning amazon-cloudformation terraform
简短的回答是:使用 CloudFormation 或 Terraform
Ansible 是用于许多不同目的的配置管理工具。与许多其他工具最显着的区别是,它以推送模式工作,因此远程服务器上没有代理轮询更改。 在安装包、创建文件等方面非常棒。
CloudFormation 旨在创建 AWS 环境。如果您只使用亚马逊而不使用其他任何东西,那就太好了。
Ansible 可以完成这项工作,但我建议使用 CloudFormation 或 Terraform 之类的工具。用于此的 Ansible 模块还可以,但 Terraform 之类的工具在创建环境方面有专长,而且它们在完成这项工作时要聪明得多。
【讨论】:
澄清一下,“UserData”是 EC2 实例的一部分,而不是 CloudFormation 本身的一部分。 EC2 实例可以使用User Data 启动,AMI 可以使用它在启动时执行动态操作。如果使用 CloudFormation 启动 EC2 实例,它可以通过在 AWS::EC2::Instance 资源上设置 UserData 属性来向 EC2 实例提供用户数据。
通常,用户数据由Cloud-Init 处理,并且通常格式化为简单的User-Data Script,它只是一个shell 脚本,在实例首次启动时会被调用。
也就是说,“Shell 脚本与 Ansible”是一个苹果到橘子的比较。 Ansible 是否适合您的用例取决于您是否需要使用 Ansible 内置的额外抽象层而不是标准 shell 脚本来配置实例所需的内容。阅读Ansible Documentation 并自行决定。
值得一提的是,除了运行 Ansible 以通过 SSH 配置实例的正常“推送”方法外,您还可以使用用户数据脚本以倒置的“Ansible-pull”模式运行 Ansible EC2 实例上的初始“引导”安装。
【讨论】: