使用terraform获取和更新特定字段



我有一个场景,

如何获取特定的字段值,也更新特定的字段值?

例如:我正在使用terraform "kubernetes_deploy "部署一个应用程序;配置了环境变量的资源(endpoint=abc)) andreplicas=2.

resource "kubernetes_deployment" “app” {
…..….
spec {
replicas = 2
template {
spec {
….
env {
name  = “ENDPOINT”
value = “abc”
}
}

一旦我使用terraform脚本部署,其他脚本可能会改变配置replicas=5和环境值(endpoint=xyz))

现在我只需要更新副本到20(如果副本<20)通过地形脚本不改变环境值(端点=abc)?

resource "kubernetes_deployment" “app” {
…..….
spec {
replicas = 20       -> only this has to reflect in apply
template {
spec {
….
env {
name  = “ENDPOINT”
value = “abc”
}
}

如何获取特定字段(副本)来比较副本计数>只有更新副本才算?

有经验的人能帮我吗?

在kubernetes_deployment"资源块,考虑添加生命周期块。使用它可以忽略对资源属性的更改,这些更改可以在terrform的知识之外进行。

为"ignore_changes"提供资源属性列表,Terrform将在随后的运行中忽略它。参数是资源中属性的相对地址。Map和list元素可以使用索引符号来引用。

lifecycle {
ignore_changes = [spec["env"]]
}

参考:https://www.terraform.io/docs/language/meta-arguments/lifecycle.html ignore_changes

最新更新