AWS、HashiCorp和Terrastack联合发布了 针对 Terraform 的云开发套件 CDK(CDK,Cloud Development Kit)预览版 简称 cdktf。cdktf 支持开发人员使用 Python、Typescript 等编程语言管理 基础设施 即代码。cdktf 会生成 JSON 格式的 Terraform 配置,进而可使用“terraform apply”命令部署资源。此外,cdktf 支持 Terraform Registry 现有的 module 和 provider ,以部署资源到 AWS、Azure 和 Google Cloud。
CDK是一个开源框架,支持使用 TypeScript、Java和Python等编程语言定义和 供应基础设施 ,功能上类似于 Pulumi和 Terrastack等工具。目前的 cdktf 初始发布版仅支持 Typescript 和 Python 语言, 但是会 在未来版本中添加对 Java、JavaScript 和 C#等编程语言的支持。AWS CDK 可生成用于部署 基础设施 的 Cloudformation 格式 的 配置,但 cdkft (或称 CDK for Terraform ) 生成的是 JSON 格式的 Terraform 配置文件,这并非 HashiCorp 配置语言(HCL , HashiCorp Configuration Language )的传统模板。 因此 ,“terraform plan”和“terraform apply”等命令将继续支持使用 cdktf 输出的 JSON 格式配置。
此外,开发人员可以使用 Terraform Registry现有的 provider 和 module 。例如,cdktf 可以部署 基础设施 资源到 除AWS之外的Azure、Google Cloud等云服务提供商。cdktf 还兼容 Docker容器和 HashiCorp Vault。
鉴于 Terrastack 的 维护者 Sebastian Korfmann现在同样是 cdktf 的维护者,因此二者存在很多相似之处。AWS CDK 团队也通过为 CDK构建编程模型和 AWS CDK 工具核心软件库 jsii推荐模式和实践 以便于为该 项目做出贡献。对于上述两个组件,HashiCorp 的 Anubhav Mishra在 预览版发布公告中做出了如下解释:
CDK构建编程模型是定义 基础设施 资源和适配器的一组语言原生框架,用于生成适用于底层 资源供应 引擎的配置文件。jsii 允许 所有支持 的 语言与JavaScript类 进行 自然 的 交互,并支持以多种编程语言交付软件库 ,所有这些语言的代码能够来自同一个代码库 。AWS CDK 能够 使用这两个组件从TypeScript、JavaScript、Python、Java和C#编写的代码中生成CloudFormation配置。
在 预览版发布公告中,AWS 团队给出了一段示例代码,展示了如何使用 cdktf 框架以 TypeScript 代码设置 AWS EC2 实例:
想要上手使用 cdktf 的开发人员,首先需要 安装cdktf CLI,初始化项目并生成 Terraform 配置文件。然后,开发人员需要根据所使用的编程语言 下载相应的框架软件库。之后开发人员可以运行“cdktf init --template=typescript”命令,引导应用,下载依赖,并确认项目状态的存储位置。下面展示了 cdkft 项目的目录和文件结构:
在完成 基础设施 定义后,开发人员需使用 cdktf 提供的“cdktf synth”命令生成 Terraform 配置。然后,开发人员可以使用传统的 Terraform 工作流去下载依赖、验证计划的更改,进而将 基础设施 部署到云上。也可使用“cdktf deploy”命令实现同一工作流的部署。此外,cdktf 也支持在 基础设施 代码中使用 Chef等其它provider 。
图片来源:预览版发布公告“ CDK for Terraform:提供对Python和TypeScript的支持”
HashiCorp 同时发布了 手把手的 入门操作指南,指导 我们 使用 cdktf 实现 用Docker设置NGINX服务器,用TypeScript部署AWS EC2实例,并给出了用于 Azure和 Google Cloud等 provider 的示例。cdktf 工具目前依然是一个实验性项目,社区欢迎通过 在GitHub上反馈或创建 pull request 做出贡献。
原文链接:
Cloud Development Kit Can Now Generate Terraform Configurations Using TypeScript and Python
评论