2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:0010359

评论

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

关于组态图和组态图设计

2D3D前端可视化开发

组态软件 组态 组态图库 组态界面 组态工具

用友电子凭证综合服务平台2.0重磅发布!

用友BIP

电子凭证

探索 Tokio Runtime丨Fabarta 技术专栏

Fabarta

人工智能 rust 图数据库 rust开发者大会 ​Rust

数据库面试题从浅入深高频必刷「2024版」

王中阳Go

MySQL 数据库 后端 面试题 面经

SQL 也能搞复杂时序查询?-使用 SQL 在 GreptimeDB 上做 Range 查询

Greptime 格睿科技

数据库 sql 时序数据库

三分钟搞懂Serverless,互联网个人创业者必备

凌览

node.js Serverless 独立开发者

​iOS Class Guard github用法、工作原理和安装详解及使用经验总结

代购系统独立站的未来发展前景

Noah

聊点技术|数据爆炸性增长,Bonree ONE存储如何做到稳如泰山

博睿数据

C语言自定义类型 | AI工程化部署

AIWeker

c AI工程化部署

微软远程管理Microsoft Remote Desktop怎么样?好用吗?

Rose

Mac远程控制软件 microsoft remote desktop mac破解软件下载 微软远程管理

时间复杂度为 O(n^2) 的排序算法 | 京东物流技术团队

京东科技开发者

算法 排序算法 O(n^2)

记一次线上视频接口OOM问题

xfgg

Java

AnyGo for Mac(在iPhone / iPad上轻松模拟GPS位置)v6.9.0激活版

Rose

AnyGo中文版 AnyGo for Mac Mac虚拟机定位 GPS位置 AnyGo破解版

初识 OpenCV

数新网络官方账号

OpenCV 计算机视觉

苹果Macos好玩的经典游戏推荐!

Rose

mac游戏 苹果mac游戏 Mac游戏推荐

Wireshark中的ARP协议包分析

小魏写代码

每日一题:LeetCode-41. 缺失的第一个正数

Geek_4z9ami

面试 算法 数组 LeetCode 哈希表

高精度时序分析工具PP-TSv2!一站式解决电力负荷预测、设备异常检测等多场景任务

飞桨PaddlePaddle

人工智能 开发者 开发工具 技术干货 时序分析工具

畅捷通的 Serverless 探索实践之路

Serverless Devs

云计算 Serverless AIGC

KaiwuDB 通过中国信通院“可信数据库”性能与稳定性评测

KaiwuDB

KaiwuDB 可信数据库

如何在 Mac 上创造一个纯 Windows 环境

Rose

Parallels Desktop

企业服务大模型扎根生产一线,用友BIP为中国智造“再续新篇”!

用友BIP

企业大模型

石磊:以人为本,精细运营 ,企业招聘管理的下半场

用友BIP

智能招聘

去哪儿“技术债”偿还实践:如何高效、低风险砍掉50%无用代码?

TakinTalks稳定性社区

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