如何更改 cloudformation 中的默认根 EBS 大小? [AWS]
Posted
技术标签:
【中文标题】如何更改 cloudformation 中的默认根 EBS 大小? [AWS]【英文标题】:How to change default root EBS size in cloudformation? [AWS] 【发布时间】:2017-02-07 16:43:38 【问题描述】:考虑到 cloudformation 的在线文档和解决方案数量较少,我决定解决一个常见问题,即更改通过 cloudformation 模板启动的 EBS 卷的默认大小
默认情况下,启动的实例有 8GB 大小,如果您想知道如何根据自己的喜好将其更改为某种东西,而不是找到正确的解决方案。
有两种方法可以避免该问题
解决方案 1:使用 VolumeAttachment 创建新卷(方法不正确)
"EBS" :
"Type" : "AWS::EC2::Volume",
"Properties" :
"Size" : "100",
"AvailabilityZone" : "Fn::GetAtt" : [ "EC2Instance", "AvailabilityZone" ]
,
"MountPoint" :
"Type" : "AWS::EC2::VolumeAttachment",
"Properties" :
"InstanceId" : "Ref" : "EC2Instance" ,
"VolumeId" : "Ref" : "EBS" ,
"Device" : "/dev/sda1"
在这里我创建了一个新卷,并且厌倦了将其附加到不起作用的实例。(CF 模板无法启动)
解决方案 2. 块设备映射(正确方式)
使用 BlockDeviceMappings 是正确的方法
"BlockDeviceMappings": [
"DeviceName": "/dev/xvda",
"Ebs":
"VolumeType": "io1",
"Iops": "300",
"DeleteOnTermination": "false",
"VolumeSize": "30"
],
不要将设备名称保留为 /dev/xvda1 否则它将无法工作。 如果所选操作系统是 Amazon Linux,请将块设备映射的“DeviceName”属性设置为“/dev/xvda”,否则对于 Ubuntu 或 CentOS,请将其设置为“/dev/sda1” /p>
【问题讨论】:
启动时是否还需要在用户数据中运行“growpart”和“resize2fs”? 设备命名aws doc 【参考方案1】:因此,考虑到您有多个操作系统并且想要增加 EBS 卷的默认大小的最终解决方案,请使用 Fn::If 内部函数 设置块的“DeviceName
”属性如果所选操作系统是 Amazon Linux,则设备映射到“/dev/xvda
”,否则它将为其他操作系统设置为“/dev/sda1
”。
片段看起来像这样:
"BlockDeviceMappings": [
"DeviceName":
"Fn::If": [
"Amazon-AMI", // condition satisfying that if amazon is OS then use /dev/xvda or else /dev/sda1
"/dev/xvda",
"/dev/sda1"
]
,
"Ebs":
"VolumeType": "io1",
"Iops": "300",
"DeleteOnTermination": "false",
"VolumeSize": "100"
]
这应该让您的 cloudformation 没有任何错误。 如果您仍然有任何错误,请检查您的模板并正确验证它
【讨论】:
忘记了我之前的评论,我看到你需要添加一个条件部分。您能否显示您的条件部分以查看您如何决定“Amazon-AMI”的值是否设置为 true? 嗨@CarlR我没有使用条件部分,我只是使用if语句来决定操作系统类型。我的模板从参数部分中的允许值中获取操作系统名称,这些值在下面提到的条件下进一步使用。 "Fn::If": [ //If "--Amazon OS name here--", //then "/dev/xvda", //use xvda "/dev/sda1" // or use sda1 ]
相关问题 - ***.com/q/59586518/3317808
请提供任何 YAML 示例。以上是关于如何更改 cloudformation 中的默认根 EBS 大小? [AWS]的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 CloudFormation 设置 EC2 实例根卷的标签
如何根据 IAM 角色 CloudFormation 模板中的参数提供不同的条件
CloudFormation 模板设置 S3 存储桶默认加密 [重复]