AWS Export配置为cloudformation模板

问题描述 投票:10回答:3

我正在使用AWS CLI和cloudformation,我在文档中找不到任何参考。

任何人都知道是否可以从当前配置创建一个云形态模板。

假设我想从当前的安全组配置中获取一个cloudformation模板。

是否有可能使用命令行将该配置导出为模板?

问候。

amazon-web-services amazon-ec2 amazon-cloudformation
3个回答
7
投票

根据我们的经验,我们找到了两种可能的方法来将现有的手动部署(从Web控制台UI)AWS基础设施转换为Cloudformation(CF)。

  1. 使用aws cli为构成堆栈的每个元素执行$aws service_name_here describe,例如对于RDS数据库堆栈: RDS实例 - > Type: AWS::RDS::DBInstance, RDS(EC2)SG - > Type: AWS::EC2::SecurityGroup, RDS子网集团 - > Type: AWS::RDS::DBSubnetGroup和 RDS DB Param Group - > Type: AWS::RDS::DBParameterGroup

并根据从aws cli获得的每个组件的输出手动转换为CF.这种方法通常需要AWS和CF的更多经验,但您创建的模板可以根据良好实践进行结构化和设计,完全参数化(Sub, Ref, Join, Fn::GetAtt:, Fn::ImportValue),模块化,应用conditions,并且在第一次迭代中结果可能接近于模板的最终状态(有趣的参考例子:https://github.com/widdix/aws-cf-templates/)。

  1. 使用AWS CloudFormer: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-cloudformer.html http://www.tothenew.com/blog/using-aws-cloudformer-to-create-template-of-existing-infrastructure 注意:生成的模板不像在方法(1)下手动开发的那样“整洁”,它们将具有硬编码的所有ID和值,并且它的结构可能不符合您用于CF的约定模板,但当然它将提供一个很好的起点。

加分! :)

  1. 使用Terraforming(https://github.com/dtan4/terraforming)。考虑到Terraform 0.12.0-beta2的新版本(已经由terraform-provider-aws 2.7.0在稳定版本中支持),具有新功能及其更友好的语法,并且不会忽略它是一个开源工具和云提供商不可知,我不会忽视生成的可能性基于现有AWS基础设施的Terraform代码,如果可能的话,以模块和子模块的形式作为参考 - > https://registry.terraform.io/作为AWS CF的替代品。
  2. 将当前部署的AWS infra导出为Cloudformation / Terraform代码的其他一些新替代方案: https://former2.com https://modules.tf

13
投票

使用AWS CLI是不可能的,但您可以使用CloudFormer [1]工具从现有资源创建CloudFormation模板。我用它取得了不错的成功。模板不像手工模板那样“漂亮”,但它们提供了一个很好的起点。

[1] http://aws.amazon.com/developertools/6460180344805680


6
投票

除了CloudFormer,你可能想看看Bellerophon:https://github.com/arminhammer/bellerophon

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