我们使用Terraform创建和管理我们的AWS基础设施。 我们有一些带有第二个网络接口的退出ec2实例,这些实例是使用aws_network_interface资源中的附件块创建的。 我们想要转到使用aws_network_interface_attachment资源,并从aws_network_interface资源中删除附件块。 但是,当我们尝试执行此操作时,Terraform只想附加网络接口事件,尽管它已经附加了,这会导致作业失败。 我们无法手动删除该接口并让Terraform附加它,因为这会导致服务中断。 有人有建议吗?
旧代码
resource "aws_network_interface" "name" {
...
attachment {
instance = "SomeInstanceId"
device_index = 1
}
}
新代码
resource "aws_network_interface_attachment" "attachmentName" {
provider = "aws.client"
instance_id = "SomeInstanceId"
network_interface_id = "SomeInterfaceId"
device_index = 1
}
答案 0 :(得分:0)
免责声明:这样弄乱您的状态文件是一个坏主意,但有时是唯一的方法。在开始之前,请确保备份了tf状态,如果要更加安全,请临时使用只读凭证运行terraform,以免混淆任何重要内容。这是一项高级更改,有可能永久破坏您的状态,因此,如果不确定,请不要继续。
附件是一种怪异的非资源terraform构造,因此实际上不可能以常规方式对其进行处理。
但是tfstate文件只是json,您可以对其进行调整以表示所需的任何状态。我会做以下事情: