################################# ## ## 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 ;
解决方法
考虑到这一点,这些是您可能需要处理的额外步骤
>清理/ etc / hosts,/ etc / resolv.conf,/ etc / sysconfig / network中的任何自定义值
>除了删除ifcfg文件外,不要忘记删除任何路由文件(/ etc / sysconfig / network-scripts / route-eno *),如果有的话
>旋转并清理每个日志文件,审核日志和wtmp文件(不要删除wtmp文件,只需要cat / dev / null> / var / log / wtmp),这样它们就会空着
>清理/ var / tmp和/ tmp
>清理vmware配置日志(如果有)(iirc,/ var / log / vmware-imc / *)
>如果您将模板注册到RH Satellite,SpaceWalk,SuSE Manager或RHN本身,请确保将/ etc / sysconfig / rhn或类似版本恢复为默认值.从经验来看,这些都是一个坏主意.我们通常只是在第一次创建图像时进行备份,而在关闭图像时返回mv.如果您的环境使用它,/ etc / sysconfig / osad也是如此.
>删除可能已创建的任何额外用户,以及影子文件上的每个单个密码
>确保初始化,首次启动,部署后自定义脚本实际设置为在首次启动时运行.
最后,但并非最不重要的是,您可以将每个文件系统以及额外未使用的VG空间归零,这样您就可以更好地压缩图像.我们有一个进入每个文件系统的脚本,dd是一堆零,直到它填满,然后删除文件.对于具有空白空间的VG,创建一个填充100%FREE的LV,将其清零并将其删除.完成这些最后步骤(关闭之前的最后一步)后,您可以根据您正在创建的图像类型使用技巧:
>对于VMWare,将映像克隆到新VM,目标设置为精简配置.执行此操作时,所有连续的零将转换为空
>对于openstack / kvm映像,您可能希望使用qemu-img将它们转换为qcow2(如果您的提供者支持它),并启用compress标志:qemu-img convert -f raw -O qcow2 -c source.raw destination. qcow2
我们从这个过程中得到的一件事是,每当我们通过一个新的图像循环运行时,我们就会知道我们可以添加的新东西,通常只有在它发布之后.这会添加到下一个周期,依此类推.
编辑:根据“每次我们学到新东西”的精神,上次添加了以下步骤:
>百胜历史新> yum重新安装baseystem -y