【发布时间】:2023-02-02 20:57:29
【问题描述】:
我想使用 Terraform 创建一个 EC2 实例。这个实例应该有一些 EBS。
在我读到的文档中,Terraform 提供了两种创建 EBS 的方法:
ebs_block_device-
aws_ebs_volume和aws_volume_attachment
我想知道,我应该什么时候使用ebs_block_device?
文档
不幸的是,文档并不清楚(至少对我而言):
- 什么时候使用
ebs_block_device? - 确切的实际行为如何?
ebs_block_device-(可选)一个或多个配置块以及附加到实例的 EBS 块设备。块设备配置仅适用于资源创建。有关属性和漂移检测的详细信息,请参阅下面的块设备。将其作为属性引用访问时,它是一组对象。和
目前,Terraform 无法自动检测对现有资源的
ebs_block_device配置的更改。要管理 EBS 块对实例的更改和附加,请改用aws_ebs_volume和aws_volume_attachment资源。如果您在aws_instance上使用ebs_block_device,Terraform 将承担对实例的全套非根 EBS 块设备的管理,将额外的块设备视为漂移。因此,ebs_block_device不能与给定实例的外部aws_ebs_volume和aws_volume_attachment资源混合。研究
我读:
- No change when modifying aws_instance.ebs_block_device.volume_size,它表示 Terraform 没有显示
plan/apply的任何更改,并且在 AWS 中没有任何更改,尽管进行了更改..- AWS "ebs_block_device.0.volume_id": this field cannot be set,表示 Terraform 在运行
plan时显示错误。- Ebs_block_device forcing replacement every terraform apply,表示 Terraform 取代了所有 EBS。
- aws_instance dynamic ebs_block_device forces replacement,它说 Terraform 取代了所有 EBS,尽管没有进行任何更改。
- adding ebs_block_device to existing aws_instance forces unneccessary replacement,表示 Terraform 用所有 EBS 替换了整个 EC2 实例。
- aws_instance dynamic ebs_block_device forces replacement,它表示 Terraform 将整个 EC2 实例替换为所有 EBS,尽管没有进行任何更改。
我知道问题与 Terraform 和 Terraform AWS 提供商的不同版本有关,并且一些问题已经解决,但实际预期行为是什么?
问题
我应该什么时候使用
ebs_block_device?此功能的用例是什么?
【问题讨论】:
标签: terraform terraform-provider-aws