【问题标题】:How can I write a ValidateFunc for 2 fields of Terraform provider schema?如何为 Terraform 提供程序模式的 2 个字段编写 ValidateFunc?
【发布时间】:2020-03-11 04:17:08
【问题描述】:

我正在编写一个自定义提供程序,其中我在架构中定义了 2 个字段,即:host_instance_type 和 storage_capacity。为 storage_capacity 编写验证函数的最佳方法是什么,其行为对于不同的 host_instance_type 是不同的? 在此 storage_capacity,必须只为特定的 host_instance_type(比如 A)指定。但不应为 host_instance_type(比如 B)指定 storage_capacity。

【问题讨论】:

标签: terraform


【解决方案1】:

ValidateFunc,不幸的是,只接受定义它的字段作为参数。

但是,您可以在资源本身的 CRUD(创建、读取、更新、删除)逻辑中执行验证逻辑。例如,查看 AWS 的 lambda 函数资源如何在其“创建”函数中执行验证:https://github.com/terraform-providers/terraform-provider-aws/blob/master/aws/resource_aws_lambda_function.go#L297

【讨论】:

  • 值得注意的是,此验证只会在apply 时间发生,而不是像正常的ValidateFunc 那样在计划/验证时间发生。
  • 如果 Terraform 可以在两个不同的字段之间执行验证,这样就可以在 terraform plan 上返回错误而不是 apply。
  • @SaloneeRege 一个常见的解决方案,虽然不是您问题的直接答案,但只是对每个配置类型使用不同的块,而不是区分类型的键(具有某些属性)。例如,在此处查看logs_configs 下的子块terraform.io/docs/providers/aws/r/codebuild_project.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 2019-11-23
  • 2022-01-16
  • 1970-01-01
  • 2020-05-16
  • 2021-12-26
相关资源
最近更新 更多