【问题标题】:Does it make sense to bake your AMI if you use cfn-init in your cloudformation template?如果您在 cloudformation 模板中使用 cfn-init,烘焙 AMI 是否有意义?
【发布时间】:2015-09-02 08:13:17
【问题描述】:
我开始怀疑我是否错过了 cfn-init 的全部要点。我开始考虑我应该烘焙我在 cfn 模板中使用的 AMI 以节省时间,这样就不会浪费时间重新安装所有软件包,这样我就可以快速测试下一个 boostrapping 步骤。但是,如果我在我的 cfn-init 命令中有下载 awslogs 并通过在我的用户数据中执行 cfn-init 命令来流式传输我的日志,如果我将其放入,我的日志组将被创建,但 awslog 程序不需要运行一个新的命令来开始流式传输日志,如果该命令被烘焙是没有意义的。这让我想到了我的下一个问题,cfn-init bootstrapping 是否设计(或至少是最佳实践)在每次新的 ec2 时运行它旋转起来,即您不能或不应该在 cfn-init 部分烘烤?
【问题讨论】:
标签:
bootstrapping
amazon-cloudformation
【解决方案1】:
您的疑问非常有道理,这纯粹是 devop 的设计方法和工作风格。
如果你的 cfn-int 只是完成了几个包的安装;很好,这可以在 AMI 中烘焙。正如您正确指出的那样,这将节省时间并确保更快地创建堆栈。
但是,如果您想安装最新版本的软件包怎么办;在这种情况下,您只需将最新标志/关键字添加到 cfn-init 包部分。我已经使用 cfn-init 来动态接受 Active Directory 的 BIOS 名称 - 域控制器;所以在这种情况下,我无法在 AMI 中进行烘焙。
cfn-init 帮助的另一个地方是假设您已经配置了 4 个要安装的软件包;如果您还需要安装另一个软件包怎么办?在这种情况下 - 如果是 CloudFormation cfn-init - 这是要添加的另一行代码。如果是 AMI - 一种新的 AMI 方法,新的 AMI 必须烘焙。
这纯粹是一种权衡。