耗尽空间后,我不得不调整我的EBS卷的大小,现在我想让我的Terraform的大小部分可配置,并将以下块添加到aws_instance
资源:
ebs_block_device {
device_name = "/dev/sda1"
volume_size = 32
volume_type = "gp2"
}
现在在运行terraform plan
后,它想破坏现有的卷,这很糟糕。我还尝试使用terraform import
导入现有的名称,但它希望我为资源使用不同的名称,这也不是很好。
那么这里的正确程序是什么?
答案 0 :(得分:1)
aws_instance
resource docs提到对任何EBS块设备的更改都将导致重新创建实例。
为了解决这个问题,您可以使用Terraform之外的其他东西来使用AWS的新elastic volumes功能来扩展EBS卷。 Terraform也无法检测到aws_instance
资源中创建的任何附加块设备的更改:
注意:目前,Terraform无法自动检测对现有资源的* _block_device配置的更改。在对块设备配置进行更新后,可以使用污染命令手动触发资源重新创建。
因此,您不需要返回并更改Terraform配置中的任何内容,除非您想在某个时刻使用Terraform重建实例,此时担心丢失实例显然没有实际意义。
但是,如果出于某种原因,您希望能够对Terraform配置进行更改和保持实例不被破坏,那么您需要操作状态文件。