gpt4 book ai didi

地形;为什么通过列表索引语法引用元数据?

转载 作者:行者123 更新时间:2023-12-02 16:36:27 26 4
gpt4 key购买 nike

示例:https://www.terraform.io/docs/providers/kubernetes/r/service_account.html

我们看到了:

resource "kubernetes_service_account" "example" {
metadata {
name = "terraform-example"
}
secret {
name = "${kubernetes_secret.example.metadata.0.name}"
}
}

元数据不是列表,为什么 secret /名称值使用.0引用元数据?

最佳答案

提供商已将 metadata block 类型定义为在内部表示为对象列表。这在当今的 Terraform 提供程序中很常见,因为 Terraform v0.12 之前的 Terraform 版本要求提供程序仅在列表和集合之间进行选择,作为嵌套 block 类型的支持数据类型。

Terraform v0.12 及更高版本确实支持将单例 block 表示为单个对象,但早于 Terraform v0.12 版本的提供程序仍倾向于使用列表表示来实现向后兼容性。 (在撰写本文时,大多数提供商在其新版本中仍与 Terraform v0.11 和 v0.12 兼容。)

The new kubernetes provider (在我写这篇文章时仍在开发中)是专门为 Terraform v0.12 及更高版本构建的,因此它能够更直接地反射(reflect)底层 Kubernetes 模式,包括将 metadata 视为一个单一的目的。有关新提供程序版本的公告帖子包括此示例:

resource "kubernetes_manifest" "example_crd" {
provider = kubernetes-alpha

manifest = {
apiVersion = "apiextensions.k8s.io/v1"
kind = "CustomResourceDefinition"
metadata = {
name = "testcrds.hashicorp.com"
labels = {
app = "test"
}
}
spec = {
group = "hashicorp.com"
names = {
kind = "TestCrd"
plural = "testcrds"
}
scope = "Namespaced"
versions = [
{
name = "v1"
served = true
storage = true
schema = {
openAPIV3Schema = {
type = "object"
properties = {
data = {
type = "string"
}
refs = {
type = "number"
}
}
}
}
}
]
}
}
}

可以以更直观的方式访问这个新提供者的元数据名称,因为 metadata 是单个对象:

kubernetes_manifest.example_crd.manifest.metadata.name

关于地形;为什么通过列表索引语法引用元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62659586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com