Что нужно сделать перед преобразованием работающей виртуальной машины в OVA (распространяемое виртуальное устройство), что нужно сделать, чтобы убедиться, что она находится в состоянии готовности, чтобы экземпляры OVA не приносили ненужного или потенциально разрушительного мусора из процесса сборки? Это то, что у меня есть. Я что-нибудь упускаю? Если на это уже был дан ответ или есть документ Best Common Practices, я был бы признателен за указатель в правильном направлении. Спасибо.
################################# ## ## Get all packages up2date and ## clean out any cruft in the ## local packages ## ################################# yum -y update ; yum clean all ; ################################# ## ## Get rid of the signs I was ## tinkering with this ## ################################# [[ -a /etc/issue-original,v ]] && unlink /etc/issue-original,v ; [[ -a /etc/issue,v ]] && unlink /etc/issue,v ; ci -u /etc/issue ; ################################# ## ## Remove the host-keys to they ## will be regenerated when the ## new VM is spun-up ## ## Also make sure I remove any ## personal keys I may have been ## using while setting up ## ################################# find /etc/ssh/*host* |xargs unlink ; find /root/.ssh/ -type f |xargs unlink ; find /home/*/.ssh/ -type f |xargs unlink ; ################################# ## ## Get rid of the use of UUID in ## FSTAB and any NIC configuration ## so the new VM can find then when ## the UUIDs are regenerated ## ## Since we use LVM, only the /boot ## slice is a direct slice reference ## the rest are logical volumes ## ################################# sed -i -e 's/UUID=[0-9a-f-]*\s/\/dev\/sda1\t/' /etc/fstab ; sed -i -e '/^UUID=[0-9a-f-]*.*/d' /etc/sysconfig/network-scripts/ifcfg-eno* ; sed -i -e '/^UUID=[0-9A-F-]*.*/d' /etc/sysconfig/network-scripts/ifcfg-eno* ; find /etc/udev/rules.d/ -iname '70*net*' |xargs unlink ; ################################# ## ## Let the NTP daemon know to ## expect a big jump in time, so ## he doesn't freak out. Also let ## him know that if the walls melt, ## it is the acid, speaking and ## he'll be alright ## ################################# [[ -a /etc/ntp.conf ]] && \ [[ "$(head -1 /etc/ntp.conf)" == "tinker panic 0" ]] || \ sed -i -e '1itinker panic 0\n' /etc/ntp.conf ; ################################# ## ## Trunate the command-histories ## because the learning-process ## can contain some embarrassing ## mistakes, some of which are ## also bad opsec ## ################################# >/root/.bash_history ; >/home/*/.bash_history ; >/root/anaconda-ks.cfg ; ################################# ## ## Lastly, instruct the OS to redo ## the initial setup and put back ## that new-machine-smell ## ################################# sys-unconfig ;
У меня сейчас нет доступа к нашему текущему сценарию очистки, но мы принимаем во внимание одну из вещей, которую можно развернуть, не выполнив соответствующие шаги настройки. Это означает, например, что имя хоста в исходном образе может существовать и должно быть сброшено перед закрытием. Обычно мы устанавливаем наши localhost
.
Имея это в виду, это дополнительные шаги, о которых вам, возможно, придется позаботиться.
/etc/hosts
, /etc/resolv.conf
, /etc/sysconfig/network
любых индивидуальных значений/etc/sysconfig/network-scripts/route-eno*
), если они у вас естьcat /dev/null > /var/log/wtmp
), поэтому они запускаются пустыми/var/tmp
и /tmp
/var/log/vmware-imc/*
)/etc/sysconfig/rhn
или аналогичный возврат к значениям по умолчанию. По опыту, rm
Это плохая идея. Обычно мы просто делаем резервную копию при первом создании образа и возвращаем его обратно при закрытии. То же самое касается /etc/sysconfig/osad
, если ваша среда его использует.И последнее, но не менее важное: вы можете обнулить каждую файловую систему плюс дополнительное неиспользуемое пространство VG, чтобы вы могли лучше сжать изображение. У нас есть сценарий, который входит в каждую файловую систему, dd - это набор нулей, пока он не заполнится, а затем удаляет файл. То же самое для VG с пустым пространством, создайте LV, который заполняется на 100% БЕСПЛАТНО, обнулите его и удалите. После завершения этих последних шагов (последних перед выключением питания) вы можете использовать трюк в зависимости от типа создаваемого изображения:
qemu-img convert -f raw -O qcow2 -c source.raw destination.qcow2
Одна вещь, которую мы извлекли из этого процесса: каждый раз, когда мы запускаем новый цикл изображений, мы узнаем о чем-то новом, что могли бы добавить, обычно только после того, как оно было отправлено. Это добавляется к следующему циклу и так далее.
РЕДАКТИРОВАТЬ: в духе «каждый раз, когда мы узнаем что-то новое», в прошлый раз были добавлены следующие шаги: