写点什么

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

评论

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

直接上干货!这些细节在Android面试上要注意了

欢喜学安卓

android 程序员 面试 移动开发

公司内部使用的数仓开发规范

白贺BaiHe

数据仓库 开发规范 数仓规范 7月日更

网络攻防学习笔记 Day70

穿过生命散发芬芳

网络攻防 7月日更

密码你真的了解吗

卢卡多多

7月日更

【Flutter 专题】90 图解 Dart 单线程实现异步处理之 Future (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

ACM金牌选手整理的【LeetCode刷题顺序】

编程熊

Java 面试 算法 面经 笔试

Linux之find命令的参数详解

入门小站

Linux

架构实战营 模块八课后作业

iProcess

架构实战营

在线脑图思维导图生成工具

入门小站

工具

实时音视频技术全栈攻略|寻找C站宝藏

liuzhen007

音视频 7月日更

正式加入字节跳动!如何才能更容易拿到大厂Offer

欢喜学安卓

android 程序员 面试 移动开发

暑假期间快手将重点整治平台:短视频平台如何完善内容审核机制

石头IT视角

我为什么要学习业务建模?

escray

学习 极客时间 7月日更 如何落地业务建模

模块一作业

Always

架构实战营

模块一作业

架构0期-Bingo

TEMS模型--衡量你的人生资源

俞凡

认知

架构训练营模块 1 作业 - 1班助教

听闻

Javascript 的工作原理:引擎、运行时和调用堆栈概述

devpoint

JavaScript V8 7月日更

PowerShell 正则表达式

耳东@Erdong

PowerShell 7月日更

你以为的你以为未必是你以为的

Bruce Talk

敏捷 随笔 Agile 引导和教练

记录一次Neokylin_Server_V5系统已有分区的扩容操作

星河寒水

分区扩容

全面了解Java并发编程基础!超详细!

程序员的时光

Java 并发编程

Go 学习笔记之 结构体

架构精进之路

Go 语言 7月日更

只更新代码,然后发布版本:基于 Serverless Devs 原子化操作阿里云函数计算

Serverless Devs

我赌一包辣条这是全网最详细的代码审计(没有之一)

网络安全学海

黑客 网络安全 信息安全 代码审计 漏洞分析

Ta想做一粒智慧的种子

白洞计划

【LeetCode】基于时间的键值存储Java题解

Albert

算法 LeetCode 7月日更

Kats-Facebook最新开源的时序分析工具

好孩子

图像的模板匹配,Python OpenCV 取经之旅第 29 天

梦想橡皮擦

7月日更

推荐系统的未来发展(三十三)

Databri_AI

价值观 推荐系统

京东智造云:在世界人工智能大会上,听到的工业智能生长的声音

脑极体

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