NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Terraform Plugin Framework 现已正式发布

  • 2023-01-25
    北京
  • 本文字数:1356 字

    阅读完需:约 4 分钟

Terraform Plugin Framework现已正式发布

HashiCorp发布Terraform Plugin Framework的 1.0 版本。该框架改进并取代了Terraform Plugin SDKv2。它包括对验证器、路径表达式、嵌套属性、资源私有状态管理和自定义类型的支持。新框架中的提供者程序是用 Go 编写的可执行二进制文件。


Terraform 插件通过 RPC(远程过程调用)与 Terraform Core 一起工作。插件可用于公开特定服务(如云资源、SaaS 平台或 API)的实现。根据Brian FladDave ParfittVishnu Ravindra 的说法,新框架是对之前的 Terraform Plugin SDKv2 的改进包括:


插件框架的代码更易于维护和未来验证,它将作为未来 Terraform 插件开发特性和工具的基础。


该版本包括许多预构建的验证器,它们可以向用户提供关于语法、类型和可接受值的反馈。例如,用于检查字符串长度或确保数字在有效范围内的验证器。预构建的验证器可以在 Go 模块 terraform-plugin-framwork-validators中找到。


可以使用框架定义的泛型类型对属性进行验证。Validators 字段应该提供一个验证列表,如下例所示:


schema.StringAttribute{    //……其他属性配置……    Validators: []validator.String{        // 这些是来自terraform-plugin-framework-validators的示例验证器        stringvalidator.LengthBetween(10, 256),        stringvalidator.RegexMatches(            regexp.MustCompile(`^[a-z0-9]+$`),            "must contain only lowercase alphanumeric characters",        ),    },}
复制代码


路径表达式允许将属性之间的关系指定为相对路径。这些可以表示模式或基于模式的数据内的一个或多个实际路径。相对路径表达式是使用path.MatchRelative()函数启动的


资源私有状态管理允许数据与状态一起存储,但会在 Terraform 计划中删除。HashiCorp 建议,这可以用于存储和检索不需要向用户显示的值,例如 API 调用的 ETag。提供者程序能够在创建、导入、规划、读取和更新操作期间保存这些数据。可以在执行删除、计划、读取和更新等操作期间读取数据。私有状态数据可以使用 GetKey 函数读取:


func (r *resourceExample) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) {        value, diags := req.Private.GetKey(ctx, "key")        resp.Diagnostics.Append(diags...)        if value != nil {        //值为[]byte.        ...     }}
复制代码


虽然还会继续支持 Terraform Plugin SDKv2,但 HashiCorp 已经表示,新的 Terraform Plugin Framework 将会获得新功能和工具的优先权。可以使用迁移指南将插件从 Terraform Plugin SDKv2 迁移到新的 Terraform Plugin Framework。


基于插件框架的提供者程序可以向后兼容 Terraform 0.12 及更高版本。也可以选择使用新的Terraform Plugin Protocol版本 6。这将允许访问 Terraform 1.x 版本中的最新功能。有关该版本的更多详细信息,可以在博客文章快速上手页面上找到。


作者介绍:

Matt 领导 InfoQ 的 DevOps 编辑团队。他是教育技术公司 D2L 的云平台副总裁,负责其基础设施和云平台团队。他关注的领域是 DevOps 和 SRE,并在企业规模上实施这些。


原文链接:

HashiCorp Terraform Plugin Framework Now Generally Available


相关阅读:

Terraform 1.3,简化重构体验

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

如何将基础设施自动导入 Terraform ?

2023-01-25 08:009767

评论

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

低代码实现探索(二十七)低代码如何继承传统

零道云-混合式低代码平台

安全研究人员发现:Nanocore等多个远控木马滥用公有云服务传播

H

网络安全

精彩回顾!| Google DevFest 2021 广州国际嘉年华

江湖老铁

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列 可观测

Flink 实践教程-进阶(7):基础运维

腾讯云大数据

flink 实战 流计算 Oceanus

女生不适合当程序员?XTransfer这位程序员妈妈绝了!生娃半年内升职加薪

XTransfer技术

技术人 程序媛 XTransfer

销量之王,去年程序员最爱看的技术书就是它!

博文视点Broadview

低代码实现探索(二十六)移动端H5开发

零道云-混合式低代码平台

i人事CTO王景飞:i人事+计算巢,协同赋能HR业务

阿里云弹性计算

阿里云 计算巢

浪花过后,2022低代码该往哪儿走?

ToB行业头条

征文投稿丨使用轻量应用服务器部署Hadoop云集群

阿里云弹性计算

hadoop 轻量应用 征文投稿

使用APICloud AVM框架开发预约应用

YonBuilder低代码开发平台

前端框架 APP开发 APICloud 跨端开发 小程序开发

【网络研讨会】“专家面对面”-MongoDB模式设计

MongoDB中文社区

mongodb

OpenMLDB在AKULAKU实时特征计算场景的应用

第四范式开发者社区

机器学习 大数据 OpenMLDB 特征平台

RadonDB PostgreSQL on K8s 2.1.0 发布!

RadonDB

数据库 postgresql 开源 RadonDB

流计算 Oceanus | Flink JVM 内存超限的分析方法总结

腾讯云大数据

flink 实战 流计算 Oceanus

mark: mac 开启chrome webrtc 日志

webrtc developer

chrome WebRTC

Nacos电子书 读后感(一)

努力努力再努力

1月日更

云信小课堂|如何实现音视频安全检测?

网易云信

安全 音视频

网络安全kali渗透学习 web渗透入门 ARL资产侦察灯塔系统搭建及使用

学神来啦

markdown-it 插件如何写(二)

冴羽

前端 markdown vuepress markdown-it markdown-it插件

用11本白皮书搭建3座桥:联想企业科技集团让智能化转型不再有孤岛

脑极体

哲元科技×飞桨EasyDL|助力世界500强企业打造“灯塔工厂”,探索智能制造星辰大海

百度大脑

通证经济是更高层次的自由

CECBC

使用hydra对端口进行爆破

喀拉峻

明道云助力东航食品营销数据整合

明道云

架构实战营:模块六作业

Geek_93ffb0

「架构实战营」

喜报!东方证券携手博睿数据荣获《金融电子化》2021科技赋能金融业务突出贡献奖

博睿数据

Redis OM .NET Redis对象映射框架

MASA技术团队

C# .net 微软 后端 redis'

简单的线程池实现多线程对大文件的读取

CRMEB

12月云短信报告出炉,阿里云闯进前三

博睿数据

Terraform Plugin Framework现已正式发布_语言 & 开发_Matt Campbell_InfoQ精选文章