我正在使用AWS CLI和cloudformation,我在文档中找不到任何引用。
任何人都知道是否可以从当前配置创建一个云形态模板。
假设我想从当前的安全组配置中获取云信息模板。
是否可以使用命令行将该配置导出为模板?
问候。
答案 0 :(得分:13)
使用AWS CLI是不可能的,但您可以使用CloudFormer [1]工具从现有资源创建CloudFormation模板。我用它取得了不错的成功。模板不像手工模板那么“漂亮”,但它们提供了一个很好的起点。
答案 1 :(得分:6)
除了CloudFormer之外,你可能想看一下Bellerophon:https://github.com/arminhammer/bellerophon。
答案 2 :(得分:6)
根据我们的经验,我们发现了两种将现有的手动部署(从Web Console UI)AWS Infra转换为Cloudformation(CF)的可能方法。
aws cli
对组成堆栈的每个元素执行$aws service_name_here describe
,例如对于 RDS数据库堆栈:
Type: AWS::RDS::DBInstance
,Type: AWS::EC2::SecurityGroup
,Type: AWS::RDS::DBSubnetGroup
和Type: AWS::RDS::DBParameterGroup
并根据从aws cli
获得的每个组件的输出手动转换为CF 。这种方法通常需要在AWS和CF方面都有更多的经验,但是您可以在良好实践,完全参数化(Sub, Ref, Join, Fn::GetAtt:, Fn::ImportValue
,模块化,应用conditions
以及第一次迭代的情况下对正在创建的模板进行结构化和设计。结果可能接近模板的最终状态(有趣的参考示例:https://github.com/widdix/aws-cf-templates/)。
加分! :)
使用变形(https://github.com/dtan4/terraforming)。考虑到Terraform 0.12.0-beta2
的新版本(terraform-provider-aws 2.7.0
已在稳定版本中受支持),具有新功能和更友好的语法,并且没有忽略它是开源工具且与云提供商无关,我不会否认有可能基于现有的AWS基础设施生成Terraform代码,如果可能的话,以模块和子模块的形式使用-> https://registry.terraform.io/作为AWS CF的替代。
将您当前已部署的AWS基础设施导出到Cloudformation / Terraform代码的其他一些新选择:
答案 3 :(得分:1)
CloudFormer 当前处于测试版。我们建议不要在关键或生产环境中使用它-来自AWS文档