繁体   English   中英

Terraform 即使配置一样也想换EKS节点组

[英]Terraform wants to change EKS node groups even if configuration is the same

想要应用更改时,我遇到了 Terraform 问题。 也就是说,即使配置(用于启动模板和节点组)保持不变,Terraform 也想更改节点组设置,因为它认为启动模板版本已更改。

我的节点组配置如下所示:

resource "aws_eks_node_group" "test" {
  depends_on = [aws_launch_template.test]

  ...other settings

  launch_template {
    name    = aws_launch_template.test.name
    version = aws_launch_template.test.latest_version
  }
}

启动模板:

resource "aws_launch_template" "test" {
  name          = "test"
  instance_type = var.instance
  image_id      = data.aws_ssm_parameter.eks-ami.value
  user_data     = base64encode(local.eks-node-userdata)

  tag_specifications {
    resource_type = "instance"
    tags = {
      Name = "test
    }
  }

  lifecycle {
    create_before_destroy = true
  }
}

来自terraform的terraform apply

  # aws_launch_template.test will be updated in-place
  ~ resource "aws_launch_template" "test" {
        id                                   = "xxx"
      ~ image_id                             = (sensitive)
      ~ latest_version                       = 3 -> (known after apply)
        name                                 = "test"
        tags                                 = {}
        # (16 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # aws_eks_node_group.test will be updated in-place
  ~ resource "aws_eks_node_group" "general" {
        ...other settings

      ~ launch_template {
            id      = "xxx"
            name    = "test"
          ~ version = "3" -> (known after apply)
        }
    }

每次我运行 terraform 命令(计划或应用)时,它都想更新节点组,认为启动模板有新版本,节点组应该更新。 但是配置文件没有任何变化。 为什么会这样? 我该如何解决?

尝试评论资源“aws_launch_template”的创建。 似乎它创建了一个新的启动模板版本,即使 user_data、image 等仍然相同。

我认为问题是因为资源aws_launch_template总是创建一个新的默认版本。 也许您可以将参数update_default_version设置为false来解决这个问题。

update_default_version -(可选)是否在每次更新时更新默认版本。 与 default_version 冲突。

尝试像这样定义您的资源:

resource "aws_launch_template" "test" {
  name          = "test"
  instance_type = var.instance
  image_id      = data.aws_ssm_parameter.eks-ami.value
  user_data     = base64encode(local.eks-node-userdata)
  update_default_version = false

  tag_specifications {
    resource_type = "instance"
    tags = {
      Name = "test
    }
  }

  lifecycle {
    create_before_destroy = true
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM