【问题标题】:AWS SDK vs AWS CLI - AWS Cloud Formation - TerraformAWS 开发工具包与 AWS CLI - AWS Cloud Formation - Terraform
【发布时间】:2019-11-04 06:19:16
【问题描述】:

为了在 AWS 云中预置基础设施,我们目前使用从 ansible 角色调用的 Cloud Formation 模板,但我们发现在增加基础设施规模后,此代码在 GitHub 中变得非结构化或未模块化

Github 有这种代码的意大利面,没有适当的结构,可读性较差,新技术人员不容易挑选

特别是对于配置基础设施,我发现维护用 领域特定语言(如 ansible、terraform、cloudformation 等)编写的代码对于在 GitHub 中长期维护代码不是一个好主意,因为对于完全(完全)自动化,您可以结合使用这些技术。

哲学是,aws sdk 代码在 GitHub 中看起来更加结构化,因为它提供了很多抽象隐藏实现细节。

当然,供应代码与在供应的基础设施上运行的功能代码一样重要。

我们有信心,在从 Azure 迁移后,我们将坚持使用 AWS 云


领域特定语言相对于编程语言,

aws sdk 方法能解决这个问题吗?我们更喜欢 GoLang aws sdk,这样任何 GoLang 程序员都可以使用它..

【问题讨论】:

  • terraform 怎么样?
  • @Ntwobike terraform 是 cloudformation 的与云无关的版本...请阅读查询
  • 云不可知论只是一件事还有其他差异,例如:您可以使用 CF 中没有的模块系统(stackstes 是但不一样)但是您的问题不是关于CF或TF

标签: aws-sdk amazon-cloudformation terraform aws-cli


【解决方案1】:

如果我正确理解您的问题,您的意思是由于您的 Cloud Formation 代码变得难以管理,并且现在有兴趣使用 AWS 开发工具包对其进行定义,因此您可以使用软件最佳实践来更多地保留代码可维护。

与声明性语言相比,AWS 开发工具包的缺点是现在您需要负责确保在您单击运行时它不会只是创建一个新实例。例如。当我通过 AWS SDK 部署一台 ec2 机器时,下次我运行该代码时,它将部署一台新的 ec2 机器。 Cloud Formation 维护已部署内容的状态,因此更容易将增量更改部署到基础架构并恢复更改。

我建议您查看新的AWS-CDK,它允许您定义最终通过 Cloud Formation 运行的代码。它允许您编写 OO 样式的对象:

const vpc = new Vpc(this, 'vpc', {
            cidr: '10.150.0.0/16',
            natGateways: 2,
            subnetConfiguration: [
                {
                    name: 'Public',
                    subnetType: SubnetType.Public,
                    cidrMask: 20
                },
                {
                    name: 'Private',
                    subnetType: SubnetType.Private,
                    cidrMask: 22
                },
                {
                    name: 'Isolated',
                    subnetType: SubnetType.Isolated,
                    cidrMask: 22
                }
            ]
        });

遗憾的是,还不支持 Golang。

【讨论】:

  • 多久后,GoLang 支持可以与 aws cdk 一起使用?有没有一个aws论坛,我可以在哪里寻求答案?
  • 我认为使用 terraform 维护状态也很困难。不是吗?
  • 补充...您是否建议软件最佳配置实践? Ansible 是我们现在使用的
  • 我不确定 AWS-CDK 的路线图,也不确定它是否公开可用。你可以查看他们的 Gitter 或在 Github 上提交问题。在我目前的情况下,我真的不需要处理软件配置,因为我们在 AWS EKS 之上运行。我们没有手动设置需要配置的虚拟机,所以在这方面我无能为力。在 terraform 中维护状态并不难,您可以轻松设置 S3 存储桶来维护状态。更难的部分是实现像云形成一样的 CI/CD,尽管这也是可能的。不过,Terraform 与云无关。
  • 您的意思是云形成可以实现 CI/CD 与 terraform 不同?从某种意义上说...... cloudformation 可以与功能代码一起使用......并成为 jenkins 构建的一部分?
猜你喜欢
  • 2018-10-29
  • 2012-09-21
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 2018-03-05
  • 1970-01-01
  • 2020-04-21
  • 2017-09-06
相关资源
最近更新 更多