繁体   English   中英

如何使用 Terraform 为 Elastic Beanstalk 中的 EC2 实例设置 EBS 根卷以持久存在

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM