bootstrapping - 如果您在 cloudformation 模板中使用 cfn-init,那么烘焙 AMI 是否有意义?

标签 bootstrapping aws-cloudformation

我开始怀疑我是否错过了 cfn-init 的全部意义。我开始考虑应该烘焙 cfn 模板中使用的 AMI 以节省时间,这样就不会浪费时间重新安装所有软件包,这样我就可以快速测试接下来的 boostrapping 步骤。但是,如果我在 cfn-init 命令中有下载 awslogs 并通过在用户数据中执行 cfn-init 命令来流式传输日志,如果我将其写入,我的日志组将被创建,但 awslog 程序不需要运行一个新的命令来开始流日志,如果该命令被内置,那么它就没有意义。这让我想到了下一个问题,cfn-init Bootstrap 设计(或至少是最佳实践)是为了在每次新的 ec2 时运行它已旋转,即您不能或不应该在 cfn-init 部分中进行烘焙?

最佳答案

您的怀疑是非常正确的,这纯粹是 DevOp 的设计方法和工作风格。

如果你的 cfn-int 只完成了几个软件包的安装;很好,这可以在 AMI 中烘焙。正如您正确指出的那样,这将节省时间并确保更快的堆栈创建。

但是,如果您想安装最新版本的软件包怎么办?在这种情况下,您只需将最新的标志/关键字添加到 cfn-init 包部分即可。我已使用 cfn-init 动态接受 Active Directory - 域 Controller 的 BIOS 名称;所以在这种情况下我无法在 AMI 中烘焙它。

cfn-init 的另一个有用之处是假设您已经配置了 4 个要安装的软件包;如果您还需要安装另一个软件包怎么办?在这种情况下 - 如果是 CloudFormation cfn-init - 这是要添加的另一行代码。如果是 AMI - 必须烘焙新的 AMI 方法。

这纯粹是一种权衡。

关于bootstrapping - 如果您在 cloudformation 模板中使用 cfn-init,那么烘焙 AMI 是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592278/

相关文章:

mysql - 如何在每次堆栈启动时引导 RDS MySQL 创建表?

amazon-web-services - 如何描述 AWS CloudFormation 中的实例

json - 是否可以使用 AWS Cloudformation 模板将 Loadbalancers DNSname 连接到 Route53?

c - 如何在旧台式计算机上构建小型操作系统?

api - drupal Bootstrap 脚本 : how to get list of all nodes of type x?

ios - iOS 应用程序的处理流程

node.js - 防止 Sails.js 处理错误

ruby-on-rails - Rails 4 Controller 在脚手架后似乎不正确

terraform - 如何将 CloudFormation 模板转换为 terraform 代码

amazon-web-services - 如何向 AWS SAM 文件添加策略以使用 Lambda 将值放入 secret 管理器中