Cloud Development Kit:使用TypeScript和Python生成Terraform配置

2020 年 8 月 05 日

Cloud Development Kit:使用TypeScript和Python生成Terraform配置

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

2020 年 8 月 05 日 18:06 1022

评论

发布
暂无评论
发现更多内容

使用null条件运算符调用事件处理程序

喵叔

支付宝蜻蜓刷脸支付

诸葛小猿

支付宝 蜻蜓 刷脸支付

Guacamole实战

雪雷

guacamole 远程登录 堡垒机

曾经每个手机上都有的游戏,作为前端如今你也能开发出来了,附教程

web前端程序猿

html5 前端 前端训练 前端教程 web前端

微服务链路追踪之Jaeger

雪雷

全链路监控 Jaeger

GitOps工具Argo CD实战

雪雷

DevOps CI/CD gitops argo cd

三分钟搞懂依赖注入

喵叔

Gitlab CI进阶之共享CI库

雪雷

DevOps gitlab CI/CD gitlab ci

玩K8S不得不会的HELM

雪雷

k8s Helm

RabbitMQ实践

雪雷

RabbitMQ 消息队列

极客公园张鹏对话百度CTO王海峰,揭秘中国AI的今昔与前路

脑极体

K8s可视化监控之-Weave Scope

雪雷

k8s k8s可视化 k8s监控

Prometheus + Grafana详解

雪雷

监控 Grafana Prometheus 告警

微服务API网关-Kong详解

雪雷

kong api 网关

K8s事件监控之kube-eventer

雪雷

k8s事件告警 k8s资源监控 k8s管理

Go: 使用pprof收集样本数据

陈思敏捷

go golang pprof

搜狗联合清华天工研究院推出ChoreoNet模型:让数字人随着音乐翩翩起舞

脑极体

Java 生成解析二维码

喜瑞斯

Kubernetes-学习必备(awesome-kubernetes-notes)

雪雷

k8s学习 k8s入门 k8s文档 k8s知识

Ceph集群部署

雪雷

分布式存储 Ceph rdb pvc

Gitlab CI之单元测试和代码扫描

雪雷

单元测试 CI/CD gitlab ci 代码扫描

mPaas-RPC拦截器各种场景下的使用指南

阿里云金融线TAM SRE专家服务团队

RPC

Kubernetes config多集群管理工具

雪雷

k8s kubecm k8s多集群管理 kubeconfig

Java单例模式一文通

喵叔

Istio微服务治理笔记(一)

雪雷

istio 服务治理 server mesh

构建统一监管制度 加快数据要素立法修法

CECBC区块链专委会

区块链 金融 区块链数字经济

等级三整理之深信服

Lane

一文带你检查Kubernetes应用是否为最佳实践

雪雷

k8s k8s最佳实践

微服务注册发现配置中心-consul

雪雷

Consul 服务注册与发现 配置中心

API统一管理平台-YApi

雪雷

YAPI API接口管理

大数据技术思想入门(一):分布式存储特点

抖码课堂

Java 大数据 hadoop 分布式

Cloud Development Kit:使用TypeScript和Python生成Terraform配置-InfoQ