用于 Terraform 的 CDK 改进 HCL 转换和 Terraform Cloud 交互

HashiCorp发布CDK for Terraform (CDKTF)新改进

HashiCorp最近发布了CDK for Terraform (CDKTF)的一系列新改进,主要集中在类型强制、迭代器支持和函数支持等方面。此外,这些改进还包括在Terraform Cloud或Terraform Enterprise中使用CDKTF的体验优化,如计划和应用的改进以及自动创建Terraform工作空间。

CDKTF概述

CDKTF允许使用多种编程语言(如C#、Python、TypeScript、Go和Java)编写Terraform配置,并支持所有现有的Terraform提供者和模块。CDKTF应用程序代码会合成为JSON输出,可以直接通过Terraform部署。

0.16版本的主要改进

  1. 类型强制改进:更新了convert命令,使其能够匹配属性赋值时的值类型。该命令用于将现有的Terraform HCL代码转换为CDKTF兼容的语言。现在,convert命令会生成HCL类型并与提供者模式进行匹配,如果类型不匹配,传入的值将被强制转换为正确的类型,从而防止了早期版本中可能出现的错误。
  2. 元参数转换改进:改进了countfor_each等元参数的转换。现在,count元属性可以通过“逃生舱口”表示为迭代器,并且convert命令能够在不使用“逃生舱口”的情况下为for_eachcount和动态块使用迭代器。
  3. Terraform函数转换:现在可以将Terraform函数转换为适当的CDKTF函数,提高了代码的可读性,并使自动补全功能正常工作。

示例代码

以下TypeScript示例使用新的TerraformCount函数创建指定数量的实例:

const servers = new TerraformVariable(this, "servers", {
  type: "number",
});

const count = TerraformCount.of(servers.numberValue);

new Instance(this, "server", {
  count: count,
  ami: "ami-a1b2c3d4",
  instanceType: "t2.micro",
  tags: {
    Name: "Server ${" + count.index + "}",
  },
});

0.15版本的主要改进

  1. 与Terraform Cloud和Terraform Enterprise的集成改进:替换了基于Terraform Cloud API的实现,改为直接调用Terraform CLI,从而可以显示完整的计划细节。此外,CDKTF现在支持在Terraform Cloud中运行时使用成本估算和Sentinel策略。
  2. 自动创建工作空间:在运行计划和差异或应用和部署时,CDKTF现在会自动创建工作空间,改进了之前需要手动通过Terraform Cloud或Enterprise UI创建的行为。

更多信息

有关发布的更多信息,可以查看HashiCorp的博客文章升级指南。对于新用户,建议参考CDK for Terraform教程

阅读 33
0 条评论