云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

文件存储_笑傲江湖百度云_测评

小七 141 0

Terraform的CDK:启用Python和TypeScript支持

开发人员习惯于使用自己的工具和用熟悉的语言编写。几年来,HashiCorp配置语言(HCL)一直是GitHub发展最快的语言之一,但我们经常听到用熟悉的编程语言提供基础设施的愿望。今天,我们很高兴地宣布HashiCorp Terraform云开发工具包的社区预览版,它允许用户使用TypeScript和Python定义基础设施,同时利用Terraform和Terraform生态系统提供的数百个提供者和数千个模块定义。我们与AWS及其云开发工具包(CDK)团队合作,利用AWS CDK的两个关键组件来支持这个新项目:一组用于定义基础设施的语言原生框架和底层供应工具的适配器。使用这些库,AWS CDK生成CloudFormation配置。类似地,用于Terraform的CDK生成Terraform配置以启用Terraform的配置。适配器可以与Terraform注册表中托管的任何现有提供程序和模块一起工作。核心Terraform工作流保持不变,能够在应用之前计划更改。今天您可以在我们的初始版本中使用这个项目。我们用Docker快速入门教程、AWS和其他Python和Typescript中的示例创建了逐步的示例。»作为平台的地形Terraform的目标是为供应基础设施提供一致的工作流。Terraform遵循基础设施即代码的方法,并且可以扩展以支持许多云基础设施和软件服务提供商。编码的优点是能够自动创建基础设施、使用版本控制驱动的工作流、协作地审查更改以及使用软件开发的最佳实践。随着对Terraform的CDK支持的引入,使用Terraform提供和管理基础设施的方法比以往任何时候都多。过去我们支持HCL和JSON。HCL本来是供人读写的,JSON则是机器生成和消费的。今年早些时候,我们宣布使用Terraform操作符对Kubernetes自定义资源定义(crd)提供实验性支持。这使Kubernetes用户能够使用Kubernetes本机工作流配置Terraform资源。自定义资源定义被转换成Terraform,并由Terraform云远程执行。使用ITSM软件(如ServiceNow)的传统企业可以与Terraform Enterprise集成,以支持更传统的基于票务的方法。最后,有了CDK的支持,现在可以使用Python和TypeScript等编程语言。将来还可以使用对Javascript、Java和C的其他语言支持。这使得Terraform能够充当基础设施配置和生命周期管理的通用平台。如今,有数百家Terraform提供商,涵盖公共云、私有云、网络和存储硬件、云服务等等。Terraform的用户可以组成他们的基础设施,并扩展它以支持他们的需求。我们的目标是让Terraform尽可能的容易访问,我们通过提供用户觉得最方便的接口来做到这一点。现在有广泛的接口可用,我们继续从我们的社区和客户那里学习我们可以改进的地方。虽然Terraform提供了供应的核心平台,但我们在上面构建了Terraform云,以提供协作的核心平台。通过提供一个中心位置来存储状态、管理权限、启用webhook和实施策略,我们使数十人、数百人或数千人的团队能够轻松地在基础设施上进行协作。通过支持api和webhook,我们可以轻松地将Terraform云与其他系统集成,比如GitHub、GitLab、CircleCI等等。这允许您使用Terraform云作为更复杂的交付管道的一部分,但仍然保持可见性和控制。»地形的CDK使用cdkforterraform项目,您可以使用支持的编程语言定义基础设施资源。该工具使用JSON生成一个Terraform配置,可以使用Terraform apply或使用CDK for Terraform CLI和cdktf deploy来应用。它通过使用AWS CDK所依赖的基础库来支持polyglot语言,AWS CDK依赖这些库来生成和综合基础设施配置。CDK for Terraform项目包括两个包:"cdktf cli"-允许用户运行命令来初始化、导入和合成Terraform应用程序的CDK的cli。"cdktf"-一个使用编程结构定义地形资源的库。»入门cdkforterraform的社区预览包含一些特性,这些特性允许熟悉Terraform的用户编写编程构造并在JSON文件中生成Terraform配置。使用CDK for Terraform CLI以Typescript或Python初始化项目。入门示例使用TypeScript。从安装开始节点.js,纱线。接下来,在全局范围内安装Terraform的CDK。$npm安装-g cdktf cli»初始化新项目创建一个目录来存储用于创建AWS VPC的TypeScript文件。使用cdktf init初始化一组TypeScript模板。$mkdir vpc示例$cd专有网络示例$cdktf init--template=typescript输入有关项目的详细信息,包括用于存储项目状态的Terraform Cloud。您可以使用--local选项继续,而不使用Terraform Cloud进行状态管理。我们现在将设置项目。请输入项目的详细信息。如果要退出,请按^C。项目名称:(默认:'vpc example')项目描述:(默认值:"cdktf的简单入门项目"。)运行cdktf init时需要执行几个步骤。命令:下载在项目中定义的示例中,使用指定的模板主.ts.配置Terraform云组织和工作区(如果指定)。运行terraform init下载相应的terraform提供程序和模块。在本例中,它下载中指定的AWS提供程序cdktf.json文件.根据提供程序和模块架构为.gen文件夹下的资源和模块生成特定于语言的对象。运行cdktf init之后,示例目录包含要使用的TypeScript AWS资源。$树├—发电机│—提供商│——美国焊接学会│–├—访问分析器-分析仪.ts│–├#为清楚起见省略│—X射线取样-规则.ts│—模块├—地形├── cdktf.json文件├—帮助├—主d.T├── 主.js├── 主.ts├── 包.json└── tsconfig.json文件在主.ts,从/.gen/providers/aws/Vpc导入Vpc对象。Terraform的CDK在.gen/providers/aws中生成专有网络定义/专有网络.ts。接下来,定义专有网络及其CIDR块。我们使用visualstudio代码的自动完成来填充资源定义。要基于专有网络标识符创建子网,请传递专有网络id到子网对象。这个主.ts演示基于其标识符创建专有网络和子网。该示例使用一个令牌将VPC ID转换为字符串类型,并允许Terraform的CDK在稍后的合成中解析VPC ID的值。从"constructs"导入{Construct};从'cdktf'导入{App,TerraformStack,Token};从'./.gen/providers/aws/Vpc'导入{Vpc};从'./.gen/providers/aws/Subnet'导入{Subnet};从"./.gen/providers/aws"导入{AwsProvider}类MyStack扩展TerraformStack{构造函数(作用域:Construct,名称:string){super(范围、名称);新aws提供程序(此为"aws"{地区:"us-east-1"});const vpc=新的专有网络(此为"我的专有网络"{cidrBlock:'10.0.0.0/16'});新子网(此为"我的子网"{vpcId:令牌.asString(专有网络id),cidrBlock:'10.0.0.0/24'});}}const app=新应用程序();新MyStack(app,'vpc example');应用程序合成();»将TypeScript合成地形配置接下来,通过运行cdktf synth将TypeScript合成为Terraform配置。该命令在cdktf.out公司目录。$cdktf合成器在输出目录中生成的地形代码:cdktf.out公司$树cdktf.out公司cdktf.out公司├—地形└── cdk.tf.json文件通过检查生成的Terraform JSON文件cdktf.out/cdk公司.tf.json文件. 它包括专有网络的地形配置,并将专有网络ID插入子网资源中。{"//": {"元数据":{"version":"0.0.10","stackName":"vpceexample"}},"地形":{"必需的提供程序":{"aws":"~>2.0"}},"提供商":{"aws":[{"区域":"us-east-1"}]},"资源":{"aws®专有网络":{"vpceexample_myvpc_80A1790F":{"cidr_block":"10.0.0.0/16","//": {.....}}},"aws_子网":{"vpceexample_mysubnet_3769B309":{"cidr_block":"10.0.0.0/24","vpc_id":"${aws_vpc.vpc示例\u myvpc_80A1790F.id}","//": {.....}}}}}用户还可以使用cdktf synth--JSON命令在终端中打印Terraform JSON配置。合成后,用户可以使用Terraform工作流初始化、规划和应用cdktf.out公司或使用CDK for Terraform CLI运行cdktf deploy。Terraform工作流如下:加元cdktf.out公司$terraform初始化$地形图在计划前刷新内存中的地形状态。。#为清楚起见省略$terraform应用#为清楚起见省略美国焊接学会_vpc.vpce示例myvpc80a1790f:正在创建。。。美国焊接学会_vpc.vpce示例myvpc80a1790f:2s后创建完成[id=vpc-09e8fffce46a61e3d]美国焊接学会_subnet.vpce示例mysubnet3769b309:正在创建。。。美国焊接学会_subnet.vpce示例mysubnet3769b309:0s后创建完成[id=subnet-0b5b4c40744472e6]申请完成!资源:添加了2个,更改了0个,销毁了0个。#破坏资源$特拉福