我有一个地形代码如下
locals {
file_path = format("%s-%s", var.test1, var.test2)
test_decode = yamldecode((data.github_repository_file.test.content))
}
data "github_repository_file" "test" {
repository = "test-repo"
branch = "develop"
file = "${local.file_path}/local/test.yaml"
}
test_encode = ${yamlencode(local.test_decode.spec.names)}
当test.yaml文件中存在“.spec.names”属性时,此功能正常工作。由于我们根据local.file_path选择test.yaml,因此有时属性.spec.names可能不存在于test.yaml中,计划失败,并显示**“错误:不支持的属性”“。如何检查test.yaml中存在的“.spec.names**”属性?
更新问题以添加yaml示例
带名称属性的Yaml
apiVersion: helm.toolkit.gitops.io/v2beta1
kind: HelmRelease
metadata:
name: "test"
namespace: "test-system"
spec:
chart:
spec:
chart: "test-environment"
version: "0.1.10"
names:
key1: "value1"
key2: "value2"
key3: "value3"
key4: "value4"
没有名称属性的YAML
apiVersion: helm.toolkit.gitops.io/v2beta1
kind: HelmRelease
metadata:
name: "test"
namespace: "test-system"
spec:
chart:
spec:
chart: "test-environment"
version: "0.1.10"
2条答案
按热度按时间p1tboqfb1#
您可以使用try:
xqk2d5yq2#
我不知道是否存在更优雅的方法,但你可以像这样检查一个属性是否存在:
链接它来检查规范和名称是否像这样存在不对我起作用,因为即使第一个条件失败,第二个条件仍然被求值:
这确实是一个技巧,但我不喜欢它,因为我认为它是相当黑客: