如何使用packer在AMI创建过程中调整根文件系统的大小?

3

我遇到了一个问题,一些Apache日志填充得非常快,根文件系统不够大。

我使用的是由Packer和CentOS 6创建的AMI。

在AMI创建过程中如何调整根文件系统大小,以便后续使用时已准备就绪?


这与Puppet有什么关系? - Alex Harvey
我使用 Facter 来获取操作系统版本。 - Alex
哈哈。好的。你的回答加一分,但是你可能需要更清楚地表明你假设了 Puppet 的存在。 - Alex Harvey
1
谢谢@AlexHarvey,我更新了答案。 - Alex
2个回答

2

1
为了达到我的目的,我在packer配置中添加了一个user_data_file脚本,如下所示:
      "user_data_file": "/root/packer_userdata.sh", 

因此,我在packer的user_data_file中添加了以下代码;我使用了来自puppet的facter获取所需信息,但您可以使用任何您想要的方式,甚至将其作为常量。
# resize root fs if the volume is bigger
echo "ROOT DISK RESIZING" > /tmp/root_disk_resize.log
# wait for facter
while ( ! /usr/bin/facter ); do sleep 15 ; done >> /tmp/root_disk_resize.log 2>&1
OS_RELEASE=$(facter operatingsystemmajrelease 2>&1 )
ROOT_DEVICE=$(facter ec2_block_device_mapping_root 2>&1 )
# Install epel
rpm -ivh https://ftp.fau.de/epel/epel-release-latest-${OS_RELEASE}.noarch.rpm >> /tmp/root_disk_resize.log 2>&1
yum install -y cloud-utils-growpart gdisk >> /tmp/root_disk_resize.log 2>&1
# resize partition
growpart -v  ${ROOT_DEVICE} 1   >> /tmp/root_disk_resize.log 2>&1
# resize filesystem
resize2fs -p ${ROOT_DEVICE}1    >> /tmp/root_disk_resize.log 2>&1
# remove epel to avoid to interfere with the rest of the installation
rpm -e epel-release        >> /tmp/root_disk_resize.log 2>&1

该分区将被扩展,并在下次重启时将文件系统调整为完整的卷大小,尽管在 AMI 创建期间无法查看。
我发现了一些有趣的信息和项目: linux-rootfs-resize 项目 packer 讨论 autoresize-ebs-root-volume-on-aws-amis ami-block-device-mappings-example

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接