使用 terraform 获取和更新特定字段
fetch and update particular field using terraform
我有一个场景,
如何获取特定字段值并更新特定字段值?
例如:
我正在使用配置有环境变量(endpoint=abc)和replicas=2.[= 的 terraform“kubernetes_deployment”资源部署应用程序12=]
resource "kubernetes_deployment" “app” {
…..….
spec {
replicas = 2
template {
spec {
….
env {
name = “ENDPOINT”
value = “abc”
}
}
一旦我使用 terraform 脚本部署,另一个脚本可能会更改配置 replicas=5 和环境值(endpoint=xyz)
现在我只需要通过 terraform 脚本将副本更新为 20(如果副本 < 20)而不更改环境值(端点=abc)?
resource "kubernetes_deployment" “app” {
…..….
spec {
replicas = 20 -> only this has to reflect in apply
template {
spec {
….
env {
name = “ENDPOINT”
value = “abc”
}
}
如果副本数 > 20 并且仅更新副本数,我如何获取特定字段(副本)进行比较?
有更多 Terraform 经验的人可以帮助我吗?
在“kubernetes_deployment”资源块内,考虑添加一个生命周期块。使用它来忽略在 Terraform 不知情的情况下对资源属性所做的更改。
向“ignore_changes”提供资源属性列表,Terrform 将在后续运行中忽略该列表。参数是资源中属性的相对地址。可以使用索引符号引用地图和列表元素。
lifecycle {
ignore_changes = [spec["env"]]
}
参考:https://www.terraform.io/docs/language/meta-arguments/lifecycle.html#ignore_changes
我有一个场景,
如何获取特定字段值并更新特定字段值?
例如: 我正在使用配置有环境变量(endpoint=abc)和replicas=2.[= 的 terraform“kubernetes_deployment”资源部署应用程序12=]
resource "kubernetes_deployment" “app” {
…..….
spec {
replicas = 2
template {
spec {
….
env {
name = “ENDPOINT”
value = “abc”
}
}
一旦我使用 terraform 脚本部署,另一个脚本可能会更改配置 replicas=5 和环境值(endpoint=xyz)
现在我只需要通过 terraform 脚本将副本更新为 20(如果副本 < 20)而不更改环境值(端点=abc)?
resource "kubernetes_deployment" “app” {
…..….
spec {
replicas = 20 -> only this has to reflect in apply
template {
spec {
….
env {
name = “ENDPOINT”
value = “abc”
}
}
如果副本数 > 20 并且仅更新副本数,我如何获取特定字段(副本)进行比较?
有更多 Terraform 经验的人可以帮助我吗?
在“kubernetes_deployment”资源块内,考虑添加一个生命周期块。使用它来忽略在 Terraform 不知情的情况下对资源属性所做的更改。
向“ignore_changes”提供资源属性列表,Terrform 将在后续运行中忽略该列表。参数是资源中属性的相对地址。可以使用索引符号引用地图和列表元素。
lifecycle {
ignore_changes = [spec["env"]]
}
参考:https://www.terraform.io/docs/language/meta-arguments/lifecycle.html#ignore_changes