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等编程语言定义和 供应基础设施 ,功能上类似于 PulumiTerrastack等工具。目前的 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实例,并给出了用于 AzureGoogle Cloud等 provider 的示例。cdktf 工具目前依然是一个实验性项目,社区欢迎通过 在GitHub上反馈或创建 pull request 做出贡献。


原文链接:


Cloud Development Kit Can Now Generate Terraform Configurations Using TypeScript and Python


2020 年 8 月 05 日 18:061096

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

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

码农理财(一)

北漂码农有话说

理财

程序员的晚餐 | 5 月 17 日 当西红柿遇上鱼

清远

美食

Kotlin协程实践之进程、线程、协程

陈吉米

Java kotlin 协程 Coroutine

Docker 镜像制作教程:针对不同语言的精简策略

米开朗基杨

Docker Dockerfile

DevOps生命周期,你想知道的全都在这里了!

DevOps 测试 持续集成

《零基础学 Java》 FAQ 之 8-Java方法调用是传值还是传引用

臧萌

Java

EasyExcel最权威教程

知春秋

Java Excel EasyExcel

从连续两届图灵奖(2018-2019)看GPU发展史

GPU

人工智能 gpu 计算机基础 计算机图形学 计算机体系结构

有问必答(2020-05-09):如何督促自己做好一件事情?

冯夷

生活

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(一)

图雀社区

node.js vue.js Vue

2020第一篇技术博客

java劝退师首席大弟子

生活

浅谈Cloud Native技术对云上产品的影响

韩超

Docker Kubernetes 云原生 IaaS PaaS

计算机中的递归对普通人有什么启示?

BitSea

算法

一种练好英语口语的方法

七镜花园-董一凡

学习

2020年比以往任何时候更想做成的使命感

乐少

键入网址后,其间发生了什么?

小林coding

TCP 计算机网络 网络协议 IP HTTP

比AtomicLong更优秀的LongAdder确定不来了解一下吗?

一枝花算不算浪漫

并发编程 jdk源码

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

江南一点雨

spring Spring Boot spring security

写作对我的意义

Neco.W

总结 思考 写作 感悟

机会,是不会让你准备好的

Winann

学习 生活 知识管理 机会

笔记:《如何系统思考》之如何应用系统思考

wiflish

思维方式

微服务为什么要有服务发现与注册?

攀岩飞鱼

微服务 微服务冶理 微服务发现

回“疫”录(19):都什么时候了,还在搞“填表抗疫”

小天同学

疫情 回忆录 现实纪录 纪实 形式主义

11 万字的字节码编程系列合集放送(ASM、Javassist、Byte-buddy、Javaagent)

小傅哥

Java asm bytebuddy 《字节码编程》

少说废话,先干起来

白鸽

学习 个人成长 自律

Java如何处理异常情况

Rayjun

Java 异常

【高级进阶】写给大忙人看的JDK14新特性

知春秋

Java java 14 java 14 新特性

发布Maven包的正确姿势

廖雪峰

maven 开源

游戏夜读 | Scikit-learn迎来0.21版本

game1night

如何搞定Kafka重复消费?

奈学教育

kafka kafka配置

Collaboration on SaaS

zhenglei

SaaS Collaboration Cisco Webex

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