网易首页 > 网易号 > 正文 申请入驻

HashiCorp憋了3年的TypeScript神器

0
分享至


2023年Terraform开源协议变更时,开发者社区一片哀嚎。但很少有人注意到,HashiCorp同期放出了一个"逃生舱"——CDK for Terraform(CDKTF)。这个工具让你用TypeScript、Python、Java、C#或Go写基础设施代码,彻底告别HCL的括号地狱。

两年过去,CDKTF的GitHub Star数突破1.2万,npm周下载量稳定在4万次以上。更关键的是,它完全免费,且不受Terraform商业协议限制。

从HCL到TypeScript:一场语法层面的"降维打击"

HCL的问题从来不是"不能跑",而是"写起来像在做填空题"。你需要记住count、for_each、dynamic block的诡异语法,调试时盯着一堆${}嵌套怀疑人生。

CDKTF的做法很直接:把基础设施变成真正的代码。

安装只需要两行命令:

npm install -g cdktf-cli
cdktf init --template=typescript --providers=aws

然后你就能用熟悉的面向对象思维定义资源。创建一个S3桶加EC2实例,代码结构和普通Node.js项目没区别:

import { Construct } from "constructs";
import { App, TerraformStack, TerraformOutput } from "cdktf";
import { AwsProvider } from "@cdktf/provider-aws/lib/provider";
import { S3Bucket } from "@cdktf/provider-aws/lib/s3-bucket";
import { Instance } from "@cdktf/provider-aws/lib/instance";

class MyStack extends TerraformStack {
constructor(scope: Construct, id: string) {
super(scope, id);
new AwsProvider(this, "aws", { region: "us-east-1" });

const bucket = new S3Bucket(this, "app-bucket", {
bucket: "my-app-assets-2026",
tags: { Environment: "production" },
});

const server = new Instance(this, "web-server", {
ami: "ami-0c02fb55956c7d316",
instanceType: "t3.micro",
tags: { Name: "WebServer" },
});

new TerraformOutput(this, "bucket-name", { value: bucket.bucket });
new TerraformOutput(this, "server-ip", { value: server.publicIp });
}
}

const app = new App();
new MyStack(app, "my-infra");
app.synth();


cdktf deploy

执行cdktf deploy后,CDKTF会先把TypeScript编译成标准的Terraform JSON配置,再调用terraform apply。你的团队可以逐步迁移,不需要一次性重写所有HCL。

循环、条件、复用:这才是程序员该有的工具

HCL的count和for_each能解决问题,但代价是心智负担。CDKTF直接让你用原生语言特性:

// 创建3台服务器
const serverNames = ["web-1", "web-2", "web-3"];
serverNames.forEach(name => {
new Instance(this, name, {
ami: "ami-0c02fb55956c7d316",
instanceType: "t3.micro",
tags: { Name: name },
});
});

// 条件资源
if (isProduction) {
new Instance(this, "monitoring", {
instanceType: "t3.large",
});
}

更实用的是Construct机制。你可以把常用资源组合封装成可复用的类,像搭积木一样构建基础设施:

class WebApp extends Construct {
public readonly url: string;

constructor(scope: Construct, id: string, props: { domain: string; size: string }) {
super(scope, id);

const bucket = new S3Bucket(this, "assets", {
bucket: `${props.domain}-assets`,
});

const server = new Instance(this, "server", {
instanceType: props.size,
ami: "ami-0c02fb55956c7d316",
});

this.url = server.publicDns;
}
}

// 实例化两个环境
const app1 = new WebApp(this, "app1", { domain: "example.com", size: "t3.micro" });
const app2 = new WebApp(this, "app2", { domain: "staging.example.com", size: "t3.small" });

这种抽象能力在HCL里需要借助模块(module)实现,但模块的输入输出定义繁琐,且无法像类一样携带方法和状态。


CDKTF、Pulumi、HCL:三选一怎么挑

CDKTF不是唯一的选择。Pulumi更早支持多语言基础设施,且原生设计就是"代码优先";Terraform本身的HCL也在进化,1.5版本加入了可选的类型约束和测试框架。

三者的核心差异在于:

Pulumi:自研引擎,不依赖Terraform生态。优势是执行速度快、状态管理更灵活;劣势是Provider覆盖率不如Terraform,且商业版定价对团队规模敏感。

CDKTF:站在Terraform肩膀上,所有Provider和模块直接复用。适合已经深度使用Terraform、但想逃离HCL的团队。免费,且因为生成的是标准Terraform配置,可以和其他工具链无缝衔接。

HCL Terraform:生态最成熟,IDE支持最好。但语法天花板明显,复杂逻辑写起来像"用Excel做数据库"。

一个常被忽略的细节:CDKTF生成的JSON配置可以git diff,而Pulumi的状态变更对团队来说更"黑盒"。对于需要严格审计的基础设施变更,这是关键考量。

谁该现在上车

CDKTF的维护团队HashiCorp被IBM收购后,项目归属一度引发担忧。但2024年底的社区公告显示,CDKTF已转入社区驱动模式,核心贡献者包括AWS、Google Cloud的工程师。

目前最活跃的场景有三类:一是已有TypeScript/Python技术栈的Web团队,不想为基础设施单独维护一套HCL;二是需要复杂条件判断和循环的多环境部署;三是想把基础设施代码和应用程序代码放在同一个仓库、用同一套CI/CD流程管理。

一个Reddit用户的反馈很典型:「我们花了两周把2000行HCL重构成TypeScript,代码量降到800行,而且新来的后端工程师第一天就能看懂基础设施逻辑。」

但CDKTF也有代价。调试时需要同时理解生成的Terraform配置和原始TypeScript,错误堆栈偶尔让人困惑。另外,cdktf-cli的版本和Terraform版本存在兼容矩阵,升级时需要两头对齐。

如果你的团队正在Terraform和Pulumi之间犹豫,CDKTF提供了一个中间选项:不换引擎,只换语法。毕竟,基础设施代码也是代码,程序员值得用程序员的方式写。

你现在的Terraform代码库里,最让你想砸键盘的HCL片段长什么样?

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
拥9亿阵却没赢墨西哥 穆帅痛批葡萄牙:没C罗就是普通队 对手不怕

拥9亿阵却没赢墨西哥 穆帅痛批葡萄牙:没C罗就是普通队 对手不怕

我爱英超
2026-03-30 07:28:56
单依纯发长文致歉“错误全在我”, 李荣浩:不要赔偿,早点休息

单依纯发长文致歉“错误全在我”, 李荣浩:不要赔偿,早点休息

韩小娱
2026-03-30 05:40:11
周杰伦新专辑封面被嘲 “老登味” 网友:现在是他个人的审美

周杰伦新专辑封面被嘲 “老登味” 网友:现在是他个人的审美

小萝卜丝
2026-03-30 09:33:58
一位女企业家的三件“傻事”

一位女企业家的三件“傻事”

吴晓波频道
2026-03-27 08:32:56
张雪峰室内跑步有多夸张!配速是马拉松冠军基普乔格的水平

张雪峰室内跑步有多夸张!配速是马拉松冠军基普乔格的水平

金牌娱乐
2026-03-30 09:54:01
铁路应急太差劲了!D3665被困乘客:4小时没电没水没空调,没人解释没人安抚

铁路应急太差劲了!D3665被困乘客:4小时没电没水没空调,没人解释没人安抚

互联网大观
2026-03-30 12:09:16
伊朗总统指责革命卫队总司令,强调若不停火,伊朗经济将崩溃

伊朗总统指责革命卫队总司令,强调若不停火,伊朗经济将崩溃

山河路口
2026-03-29 16:15:55
米莱高调宣布:我将阿根廷的贫困率降低了27%,全靠尊重产权和市场经济

米莱高调宣布:我将阿根廷的贫困率降低了27%,全靠尊重产权和市场经济

风向观察
2026-03-30 14:33:04
特朗普:伊朗政权已更迭,将放行20艘油轮!伊朗副总统:将重塑霍尔木兹海峡管理制度

特朗普:伊朗政权已更迭,将放行20艘油轮!伊朗副总统:将重塑霍尔木兹海峡管理制度

红星新闻
2026-03-30 13:21:16
全国猪价跌破5元 创历史新低

全国猪价跌破5元 创历史新低

财联社
2026-03-29 18:02:12
澳门世界杯:国乒险被爆冷!蒯曼2-0连丢2局,决胜局1-5落后翻盘

澳门世界杯:国乒险被爆冷!蒯曼2-0连丢2局,决胜局1-5落后翻盘

全言作品
2026-03-30 12:08:56
广东省将会出现下一个 “深圳”,并不是广州,而是这个城市

广东省将会出现下一个 “深圳”,并不是广州,而是这个城市

娱乐的硬糖吖
2026-03-28 05:37:04
主持人沈南参加张雪峰告别式,落泪回忆细节:他就像睡着了一样

主持人沈南参加张雪峰告别式,落泪回忆细节:他就像睡着了一样

萌神木木
2026-03-29 11:50:49
韩国网友偷广州街头美景图,配文:这就是首尔!浏览破百万,照片中公交车尾清晰印有“广州公交”4个字,发现“闹大”后删除博文

韩国网友偷广州街头美景图,配文:这就是首尔!浏览破百万,照片中公交车尾清晰印有“广州公交”4个字,发现“闹大”后删除博文

大风新闻
2026-03-29 21:59:02
被驱逐的伊朗大使拒离境后被强行从馆内拖出,头部疑被打

被驱逐的伊朗大使拒离境后被强行从馆内拖出,头部疑被打

桂系007
2026-03-30 04:00:12
贾跃亭晒喜讯:儿子圆梦斯坦福大学研究生 为他骄傲

贾跃亭晒喜讯:儿子圆梦斯坦福大学研究生 为他骄傲

快科技
2026-03-30 09:40:20
于东来自曝:30岁开始吃药,哪天说不定没了就没了...“上班是为了生活,不是把生活全交给公司!”

于东来自曝:30岁开始吃药,哪天说不定没了就没了...“上班是为了生活,不是把生活全交给公司!”

品牌新
2026-03-30 12:11:01
全红婵接受采访谈体重管理:每天只吃一顿饿得不行,但体重一直都减不下去,接受不了这么胖的自己,但没有办法喝水就胖

全红婵接受采访谈体重管理:每天只吃一顿饿得不行,但体重一直都减不下去,接受不了这么胖的自己,但没有办法喝水就胖

极目新闻
2026-03-30 11:06:59
四国开会与中国作用

四国开会与中国作用

新民周刊
2026-03-30 10:51:55
暴跌2500点!熔断!

暴跌2500点!熔断!

中国基金报
2026-03-30 09:12:29
2026-03-30 14:56:49
报错免疫体
报错免疫体
一名在需求评审和数据异常中反复横跳的产品运营。
454文章数 1关注度
往期回顾 全部

科技要闻

DeepSeek性能异常问题已解决,服务恢复

头条要闻

美国如果发动地面战 本次战事军费或突破10万亿美元

头条要闻

美国如果发动地面战 本次战事军费或突破10万亿美元

体育要闻

想进世界杯,意大利还要过他这一关

娱乐要闻

单依纯凌晨发长文道歉!李荣浩再回应

财经要闻

油价冲击,有些亚洲货币先扛不住了!

汽车要闻

理想i9要来了!外形似小号MEGA 能冲击高端纯电市场?

态度原创

艺术
游戏
教育
公开课
军事航空

艺术要闻

600 年前的「产亡孤魂」,藏着中国女性最痛的记忆

死亡游戏里打麻将?桐姥爷和亚丝娜现身《刀剑神域》联

教育要闻

关注!西城市重点中学招聘教师啦

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

第三艘航母出动数千名士兵抵达 美军大举增兵中东战场

无障碍浏览 进入关怀版