本节介绍了封装(seal) Linux 虚拟机和 Windows 虚拟机的方法。封装就是在基于虚拟机创建模板前,把只对特定虚拟机有效的信息删除的过程。这可以防止在通过同一个模板创建多个虚拟机时,相同的信息出现在 不同的虚拟机上(这些信息在不同的虚拟机上需要有所不同)。同时,封装也可以保证相关功能的确定性,例如保证 vNIC 的顺序是可以预测的。

    有两种方法封装一个 Linux 虚拟机:手工封装或使用 sys-unconfig 命令。当手工封装一个 Linux 虚拟机时,您需要在虚拟机上创建一个文件。这个文件作为一个标记,指示了在虚拟机下一次启动时需要进行的多个配置任务。sys-unconfig 命令会自动化这个过程。但是,无论使用这两个方法中的哪一个,您都需要在虚拟机上手工删除那些只适用于特定虚拟机的文件。使用这两个方法封装 Linux 虚拟机的结果是相同的。
一. 手动封装 Linux 虚拟机来为创建模板做准备
    1、登录到虚拟机。
    2、把这个系统标识为重新配置:
      # touch /.unconfigured
    3、删除 ssh 主机密钥:
     # rm -rf /etc/ssh/ssh_host_*
    4、在 /etc/sysconfig/network 中设置 HOSTNAME=localhost.localdomain。
    5、删除 /etc/udev/rules.d/70-*:
     # rm -rf /etc/udev/rules.d/70-*
    6、从 /etc/sysconfig/network-scripts/ifcfg-eth* 中删除 HWADDR 行和 UUID 行。
    7、另外,从 /var/log 中删除所有日志,从 /root 中删除 build 日志。
    8、关闭虚拟机:
     # poweroff
    注:虚拟机现在已被封装,并可以被用来创建模板。您可以使用这个模板部署 Linux 虚拟机,不会有与配置文件相关的冲突。


二. 使用 sys-unconfig 封装一个 Linux 虚拟机
    1、登录到虚拟机。
    2、删除 ssh 主机密钥:
     # rm -rf /etc/ssh/ssh_host_*
    3、在 /etc/sysconfig/network 中设置 HOSTNAME=localhost.localdomain。
    4、从 /etc/sysconfig/network-scripts/ifcfg-eth* 中删除 HWADDR 行和 UUID 行。
    5、另外,从 /var/log 中删除所有日志,从 /root 中删除 build 日志。
    6、请运行以下命令:
     # sys-unconfig
    注:虚拟机被关机。它已被封装,并可用来创建模板。您可以使用这个模板部署 Linux 虚拟机,不会有与配置文件相关的冲突。

参考:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_virtualization/3.6/html/virtual_machine_management_guide/sect-sealing_virtual_machines_in_preparation_for_deployment_as_templates



Logo

更多推荐