在将正在运行的虚拟机转换为OVA(可再分发的虚拟设备)之前,需要做些什么来确保其处于就绪状态,以便OVA的实例不会在构build过程中带来不必要的或潜在的破坏性后缀? 这是我迄今为止。 我错过了什么? 如果这已经是答案,或者有一个最佳通用实践文档,我会很欣赏一个指向正确的方向。 谢谢。
################################# ## ##获取所有包up2date和 ##清除任何脏东西 ##本地包 ## ################################# yum -y更新; yum干净一切; ################################# ## ##摆脱我的迹象 ##修补这个 ## ################################# [[-a / etc / issue-original,v]] && unlink / etc / issue-original,v; [[-a / etc / issue,v]] && unlink / etc / issue,v; ci -u / etc / issue; ################################# ## ##删除它们的主机密钥 ##将被重新生成时 ##新的虚拟机已经启动 ## ##也确保我删除任何 ##个人密钥我可能已经 ##使用时设置 ## ################################# find/ etc / ssh / * host * | xargs unlink; find/root/.ssh/ -type f | xargs unlink; find /home/*/.ssh/ -type f | xargs unlink; ################################# ## ##摆脱UUID的使用 ## FSTAB和任何网卡configuration ##所以新的虚拟机可以find什么时候 ## UUID被重新生成 ## ##因为我们使用LVM,只有/ boot ## slice是一个直接切片引用 ##其余的是逻辑卷 ## ################################# 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; ################################# ## ##让NTP守护进程知道 ##期待一个大的跳跃,所以 ##他并不害怕。 也让 ##他知道,如果墙壁融化, ##这是酸,说话和 ##他会没事的 ## ################################# [[-a /etc/ntp.conf]] && \ [[“$(head -1 /etc/ntp.conf)”==“tinker panic 0”]] || \ sed -i -e'1inkinker panic 0 \ n'/etc/ntp.conf; ################################# ## ##修改命令历史logging ##因为学习过程 ##可以包含一些尴尬 ##错误,其中一些是 ##也是不好的opsec ## ################################# > /root/.bash_history; > / home / * /。bash_history; > /root/anaconda-ks.cfg; ################################# ## ##最后,指示操作系统重做 ##初始设置并放回 ##那新机器的气味 ## ################################# sys-unconfig;
我目前无法访问我们当前的清理脚本,但我们考虑的一件事情是,可能无需运行适当的定制步骤即可部署设备。 这意味着,例如,原始图像上的主机名可能会生效,并且在closures之前必须重置。 我们通常把我们的设置为localhost 。
考虑到这一点,这些是您可能需要照顾的额外步骤
/etc/hosts , /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或类似的文件恢复为默认值。 从经验来看,这是一个糟糕的主意。 我们通常只是在第一次创build镜像时进行备份,而在closures镜像时先备份mv。 如果您的环境使用它,则同样适用于/etc/sysconfig/osad 。 最后但并非最不重要的一点是,您可以将每个文件系统加上额外的未使用的VG空间,以便更好地压缩图像。 我们有一个脚本进入每个文件系统,dd是一堆零,直到填满,然后删除文件。 相同的VG与空的空间,创build一个LV填充100%免费,零出来,并删除它。 完成这些最后的步骤(关机前的最后一步)之后,您可以根据您创build的图像种类使用一些技巧:
qemu-img convert -f raw -O qcow2 -c source.raw destination.qcow2 我们从这个过程中得到的一件事是,每当我们运行一个新的图像周期时,我们都会学到一些我们可以添加的新东西,通常只有在发货之后。 这被添加到下一个周期,依此类推。
编辑:关于“每次我们学到新东西”的精神,上一次join了以下步骤: