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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章