使用AWS :: CloudFormation :: Init的好处

问题描述 投票:2回答:1

我一直在使用cloudformation模板一段时间,我一直在问自己以下问题:

使用AWS::CloudFormation::Init将这些语句直接添加到UserData块中有什么好处?

到目前为止,我发现AWS::CloudFormation::Init方式更加冗长,特别是当你需要几个configSets以确保你的陈述有某种顺序时。

此外,某些AMI不支持在开箱即用的情况下运行该init块,并且需要额外的脚本cfn-init,它会增加更多的冗长。

amazon-web-services amazon-ec2 amazon-cloudformation
1个回答
4
投票

我能想到的好处是:

  • 一个简单的声明性DSL。
  • cfn-init提供的日志记录等功能。
  • cfn-hup可用于在运行update-stack时检测资源元数据中的更改。

如果您喜欢与Puppet和Chef类似的配置的简单声明性DSL,请使用AWS :: CloudFormation :: Init。

如果你发现它很麻烦,可能是UserData更合适。太多的configSets可能表明您正在使用错误的工具(或订购不需要订购的东西!)。

此外,请注意AWS :: CloudFormation :: Init是旧的,它早于CloudFormation对YAML模板的支持。

在YAML支持之前,将脚本放在UserData中很困难,因为shell脚本的每一行都需要在JSON数组中编码。这使得阅读困难,容易犯错误。

在我看来,使用AWS :: CloudFormation :: Init在仅给出这两个选择时更有意义。

目前,我的首选是将shell脚本保留在CloudFormation之外,在外部对它们进行单元测试,然后将它们作为base64编码的字符串作为参数提供。 (请注意参数的4096个字符限制!)。

当然,它还取决于配置的复杂性。您不希望在UserData中的shell脚本中执行太多操作,因为它很快就会变得无法维护。

© www.soinside.com 2019 - 2024. All rights reserved.