linux – 准备虚拟设备

在将正在运行的虚拟机转换为OVA(可再发行的虚拟设备)之前,需要做些什么来确保它处于就绪状态,以便OVA的实例不会带来构建过程中不必要的或可能具有破坏性的错误?这就是我到目前为止所拥有的.我错过了什么吗?如果这已经得到答案或者有一个最佳通用实践文档,我会欣赏指向正确方向的指针.谢谢.

#################################
##
## 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中的任何自定义值
>除了删除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

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...