【问题标题】:fetch and update particular field using terraform使用 terraform 获取和更新特定字段
【发布时间】:2021-05-06 18:41:20
【问题描述】:

我有一个场景,

如何获取特定字段值并更新特定字段值?

例如: 我正在使用配置了环境变量 (endpoint=abc) 和 replicas=2 的 terraform "kubernetes_deployment" 资源部署应用程序。

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

一旦我使用 terraform 脚本进行部署,另一个脚本可能会更改配置 replicas=5 和环境值(endpoint=xyz)

现在我需要通过 terraform 脚本仅将副本更新到 20(如果副本

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

如果副本数 > 20,我如何获取特定字段(副本)进行比较并仅更新副本数?

有更多 Terraform 经验的人可以帮助我吗?

【问题讨论】:

  • 你看过ignore_changes吗?
  • 感谢重播,我应用了 ignore_changes 并且工作正常。

标签: kubernetes terraform terraform-provider-aws kubernetes-pod


【解决方案1】:

在“kubernetes_deployment”资源块中,考虑添加一个生命周期块。使用它来忽略可能在 Terraform 知识之外对资源属性进行的更改。

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

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

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

【讨论】:

    猜你喜欢
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2017-11-30
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多