大佬教程收集整理的这篇文章主要介绍了如果 Resource.Schema 属性在 Terraform 中发生更改,则避免触发更新,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图弄清楚当 resource.scheR_802_11845@a 属性之一发生更改时是否可以阻止资源更新。
本质上,我正在构建一个管理基础设施的提供商。我有更新固件的资源。类似的东西:
resource "redfish_simple_update" "update" {
transfer_protocol = "http"
target_firmware_image = "/home/mikeletux/BIOS_FXC54_WN64_1.15.0.EXE"
}
如您所见,target_firmware_image 确实是指我的固件包的完整路径。我希望能够在不触发更新的情况下更改目录。 IE。例如,通过 /home/mikeletux/Downloads/BIOS_FXC54_WN64_1.15.0.EXE 在 target_firmware_image 上方更改。
我不知道这是否可能。如果我自己研究发现 CustomDiff 函数要添加到架构中,但我认为这与我的场景不符。
你觉得我还能做些什么吗?
谢谢!
只是在这里发布我是如何最终做到的。
为了避免在路径改变而不是文件名改变时触发更新,我发现 DiffSuppressFunc 函数在这里变得非常方便:
"target_firmware_image": {
Type: scheR_802_11845@a.TypeString,required: true,Description: "Target firmware image used for firmware update on the redfish instance. " +
"Make sure you place your firmware packages in the same folder as the module and set it as follows: \"${path.modulE}/BIOS_FXC54_WN64_1.15.0.EXE\"",// DiffSuppressFunc will allow moving fw packages through the filesystem without triggering an update if so.
// At the moment it uses filename to see if they're the same. We need to strengthen that by somehow using hashing
DiffSuppressFunc: func(k,old,new String,d *scheR_802_11845@a.resourceData) bool {
if filepath.base(old) == filepath.base(new) {
return true
}
return false
},}
通过使用 filepath.base() 检查旧值和新值,我可以确定文件名是否相同,无论文件放在什么路径中。
我想在未来通过实现文件散列来改进这种行为,所以即使文件名也无关紧要,但我会留待新版本。
谢谢!
以上是大佬教程为你收集整理的如果 Resource.Schema 属性在 Terraform 中发生更改,则避免触发更新全部内容,希望文章能够帮你解决如果 Resource.Schema 属性在 Terraform 中发生更改,则避免触发更新所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。