在将其更改为Terraform后,如何将更改导入EBS卷?

时间:2017-03-21 03:23:40

标签: amazon-web-services amazon-ec2 devops terraform

耗尽空间后,我不得不调整我的EBS卷的大小,现在我想让我的Terraform的大小部分可配置,并将以下块添加到aws_instance资源:

ebs_block_device {
  device_name = "/dev/sda1"
  volume_size = 32
  volume_type = "gp2"
}

现在在运行terraform plan后,它想破坏现有的卷,这很糟糕。我还尝试使用terraform import导入现有的名称,但它希望我为资源使用不同的名称,这也不是很好。

那么这里的正确程序是什么?

1 个答案:

答案 0 :(得分:1)

aws_instance resource docs提到对任何EBS块设备的更改都将导致重新创建实例。

为了解决这个问题,您可以使用Terraform之外的其他东西来使用AWS的新elastic volumes功能来扩展EBS卷。 Terraform也无法检测到aws_instance资源中创建的任何附加块设备的更改:

  

注意:目前,Terraform无法自动检测对现有资源的* _block_device配置的更改。在对块设备配置进行更新后,可以使用污染命令手动触发资源重新创建。

因此,您不需要返回并更改Terraform配置中的任何内容,除非您想在某个时刻使用Terraform重建实例,此时担心丢失实例显然没有实际意义。

但是,如果出于某种原因,您希望能够对Terraform配置进行更改保持实例不被破坏,那么您需要操作状态文件。