用于更新现有启动模板的Terraform配置

问题描述 投票:1回答:1

我正在尝试使用Terraform在AWS上更新我现有的启动模板。下面是Terraform的配置。

resource "aws_launch_template" "update" {
  name = data.aws_launch_template.config.name
  image_id = data.aws_ami.ubuntu.id
  instance_type = "c5.large"
//  arn = data.aws_launch_template.config.arn
}

传递名称时,将引发错误400以及以下错误。

Error: InvalidLaunchTemplateName.AlreadyExistsException: Launch template name already in use.

我想要具有更新版本的相同启动模板。在terraform官方网站上找不到用于修改模板的任何文档。还是我错过了什么?

OS-macOS Catalina

Terraform版本-v0.12.21

amazon-web-services amazon-ec2 deployment continuous-integration terraform
1个回答
3
投票

总体上要注意的关于地形的一件事是,它希望拥有其管理的所有资源的整个生命周期。

在您的示例中,具有该名称的aws_launch_template.update已经存在,因此terraform基本上说:“我不拥有此资源,因此不应该更改它。”

这实际上是一个相当不错的好处,因为它意味着terraform不会(或至少不应该)覆盖或删除它不知道的资源。

现在,由于您引用的是现有的启动模板,因此我建议将其置于terraform的所有权下(假设您被允许这样做)。为此,我建议

  • 在资源本身中对启动模板的名称进行硬编码,而不是通过data

    ]引用它>
  • [Importing the resource通过运行这样的命令

 terraform import aws_launch_template.update lt-12345678

将实际启动模板ID替换为lt-12345678的位置。这将使资源归terraform所有,并实际上允许通过terraform代码进行更新。

如果您处于别人创建的环境中,请小心不要踩别人的资源。

© www.soinside.com 2019 - 2024. All rights reserved.