[英]How to set EBS root volume to persist for an EC2 instance within Elastic Beanstalk using Terraform
我已经编写了 Terraform 来管理我的 AWS Elastic Beanstalk 环境和应用程序,使用我所在区域的默认 docker 解决方案堆栈。
通过自动缩放创建的 EC2 实例具有标准/默认 EBS 根卷,该卷设置为“true”值以设置“DeleteOnTermination”——这意味着当实例被替换或销毁时,卷(以及所有数据)为也毁了。
我想将其更改为 false 并保持音量。
出于某种原因,我找不到有效的 Terraform 文档,了解如何更改此设置以使根卷持续存在。 我能找到的最接近的东西是自动缩放启动配置,可以提供“root_block_device”映射来更新它。 不幸的是,从文档中不清楚如何准确地使用它。 如果我创建一个启动配置资源,我如何在我的 beanstalk 定义中使用它。 我认为我在正确的轨道上,但需要一些指导。
我是否创建自动缩放资源,然后在我的 beanstalk 定义中引用它? 或者我是否在我的 beanstalk 定义中添加了一个特定的设置,里面有这个映射? 感谢您提供的任何帮助或示例。
这可以通过Resources在 EB 级别完成。
具体来说,您必须修改 EB 用来启动您的实例的AWSEBAutoScalingLaunchConfiguration
的设置。
以下是此类配置文件的示例:
.ebextensions/40_ebs_delete_on_termination.config
Resources:
AWSEBAutoScalingLaunchConfiguration:
Type: AWS::AutoScaling::LaunchConfiguration
Properties:
BlockDeviceMappings:
- DeviceName: /dev/xvda
Ebs:
DeleteOnTermination: false
然后要验证设置,您可以使用 AWS CLI:
aws ec2 describe-volumes --volume-ids <id-of-your-eb-instance-volume>
或者干脆终止环境并检查 EC2 控制台中的卷。
您可以使用 aws_instance 资源中的 ebs_block_device 块。 默认情况下,这将在实例终止时删除 ebs 卷。
https://www.terraform.io/docs/providers/aws/r/instance.html#block-devices
您必须使用上面的而不是 aws_volume_attachment 资源。
delete_on_termination -(可选)是否应在实例终止时销毁卷(默认值:true)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.