我正在尝试使用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
总体上要注意的关于地形的一件事是,它希望拥有其管理的所有资源的整个生命周期。
在您的示例中,具有该名称的aws_launch_template.update
已经存在,因此terraform基本上说:“我不拥有此资源,因此不应该更改它。”
这实际上是一个相当不错的好处,因为它意味着terraform不会(或至少不应该)覆盖或删除它不知道的资源。
现在,由于您引用的是现有的启动模板,因此我建议将其置于terraform的所有权下(假设您被允许这样做)。为此,我建议
在资源本身中对启动模板的名称进行硬编码,而不是通过data
和
[Importing the resource通过运行这样的命令
terraform import aws_launch_template.update lt-12345678
将实际启动模板ID替换为
lt-12345678
的位置。这将使资源归terraform所有,并实际上允许通过terraform代码进行更新。
如果您处于别人创建的环境中,请小心不要踩别人的资源。