gpt4 book ai didi

amazon-web-services - 如何使用 CloudFormation 将卷附加和装载到 EC2 实例

转载 作者:行者123 更新时间:2023-12-04 05:46:35 33 4
gpt4 key购买 nike

我找不到使用 cloudformation 附加和装载卷的方法。

我可以使用 VolumeAttachment 附加卷;但是,当我在 EC2 实例处于运行状态后执行 lsblk 时,我看到此附加实例已被卸载。

有没有办法从 Cloudformation 文件挂载此实例?我可以使用 Linux 命令来安装它,但如果改为处理来自 cloudformation 的所有内容会更好。

这是我到目前为止所得到的:

"MyEc2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyName" }
}
},
"MyVolume" : {
"Type" : "AWS::EC2::Volume",
"Properties" : {
"Size" : "50",
"AvailabilityZone" : "xyz"
}
},
"attachment" : {
"Type" : "AWS::EC2::VolumeAttachment",
"Properties" : {
"InstanceId" : { "Ref" : "MyEc2Instance" },
"VolumeId" : { "Ref" : "MyVolume" },
"Device" : "/dev/sdh"
}
}

当我在实例上执行 lsblk 时,这是我看到的结果:

xvda    202:0    0   8G  0 disk
└─xvda1 202:1 0 8G 0 part /
xvdh 202:112 0 50G 0 disk

请注意,即使我将设备名称指定为“sdh”,它也会显示附加为“xvdh”。这是为什么?正如您所看到的,这是未安装的。我该如何安装它?

最佳答案

正如 helloV 所提到的,您需要在使用 UserData 启动实例时安装它。我发现 CloudFormation 模板的新 YAML 格式要容易得多,但我也将示例放入了 JSON 中。

JSON:

"UserData"       : { "Fn::Base64" : { "Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"# create mount point directory\n",
"mkdir /mnt/xvdh\n",
"# create ext4 filesystem on new volume\n",
"mkfs -t ext4 /dev/xvdh\n",
"# add an entry to fstab to mount volume during boot\n",
"echo \"/dev/xvdh /mnt/xvdh ext4 defaults,nofail 0 2\" >> /etc/fstab\n",
"# mount the volume on current boot\n",
"mount -a\n"
]]}}

YAML:

UserData:
'Fn::Base64': !Sub
- |
#!/bin/bash -xe
# create mount point directory
mkdir /mnt/xvdh
# create ext4 filesystem on new volume
mkfs -t ext4 /dev/xvdh
# add an entry to fstab to mount volume during boot
echo "/dev/xvdh /mnt/xvdh ext4 defaults,nofail 0 2" >> /etc/fstab
# mount the volume on current boot
mount -a

关于amazon-web-services - 如何使用 CloudFormation 将卷附加和装载到 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41073906/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com