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实例:
import { Construct } from 'constructs';
import { App, TerraformStack } from 'cdktf';
import { AwsProvider } from './.gen/providers/aws';
import { Instance } from './.gen/providers/aws/instance';
class HelloTerraform extends TerraformStack {
constructor(scope: Construct, name: string) {
super(scope, name);
new AwsProvider(this, 'aws', {
region: 'us-east-1'
});
new Instance(this, 'Hello', {
ami: "ami-2757f631",
instanceType: "t2.micro"
});
}
}
const app = new App();
new HelloTerraform(app, 'hello-terraform');
app.synth();
想要上手使用cdktf的开发人员,首先需要 安装cdktf CLI,初始化项目并生成Terraform配置文件。然后,开发人员需要根据所使用的编程语言 下载相应的框架软件库。之后开发人员可以运行“cdktf init --template=typescript”命令,引导应用,下载依赖,并确认项目状态的存储位置。下面展示了cdkft项目的目录和文件结构:
$ tree
├── .gen
│ └── providers
│ └── aws
│ ├── accessanalyzer-analyzer.ts
│ ├── # omitted for clarity
│ └── xray-sampling-rule.ts
│ └── modules
├── .terraform
├── cdktf.json
├── help
├── main.d.ts
├── main.js
├── main.ts
├── package.json
└── tsconfig.json
在完成 基础设施 定义后,开发人员需使用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
领取专属 10元无门槛券
私享最新 技术干货