Как изменить размер корневой файловой системы при создании AMI с помощью упаковщика?

Я столкнулся с проблемой, что некоторые журналы Apache заполнялись так быстро, что корневая файловая система была недостаточно большой.

Я использую AMI, созданный с помощью Packer и Centos 6.

Как изменить размер корневой файловой системы во время создания AMI, чтобы она была готова для последующего использования?


person Alex    schedule 14.06.2017    source источник
comment
Какое это имеет отношение к Puppet?   -  person Alex Harvey    schedule 14.06.2017
comment
Я использую facter для получения версии ОС.   -  person Alex    schedule 15.06.2017
comment
Ха-ха. Ok. +1 за ваш ответ, но вам, вероятно, нужно прояснить, что вы предполагали существование Puppet.   -  person Alex Harvey    schedule 15.06.2017
comment
Спасибо @AlexHarvey, я обновил ответ.   -  person Alex    schedule 03.07.2017


Ответы (2)


Для достижения своего результата я добавил скрипт user_data_file в конфигурацию упаковщика следующим образом:

      "user_data_file": "/root/packer_userdata.sh", 

Поэтому я добавил следующий код в упаковщик user_data_file; Я использовал facter из puppet, чтобы получить необходимую мне информацию, но вы можете использовать все, что хотите, или даже иметь его постоянным.

# 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

обсуждение упаковщика

autoresize-ebs-root-volume-on-aws- дружище

ami-block-device-mappings- пример

person Alex    schedule 14.06.2017

Вы можете просто добавить отображение блочного устройства insi

  "launch_block_device_mappings": [
    {
      "device_name": "/dev/xvda",
      "volume_type": "gp2",
      "volume_size": 20,
      "delete_on_termination": true
    }
  ]

Вы должны проверить свой AMI, какое имя устройства может быть /dev/sda1 или /dev/xvda.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/device_naming.html

person jeferson rios caro    schedule 11.03.2021