从 vSphere 5.5 - 从模板部署 Centos 7 忽略自定义

Jef*_*rns 10 deployment vmware-vsphere centos7

我在从模板部署 CentOS7 时遇到了麻烦,因为自定义不生效。对于 VM 操作系统设置 - 我选择了 RHEL7 作为操作系统,而不是 CentOS(之前在我之前的工作中学习了 Oracle Linux 6.5 的教训)。它应该正常工作吗?不完全是。

症状
从 CentOS7 模板部署新 VM 后,在第一次启动时,服务器提供了正确的主机名,然后执行自定义脚本,并且在 VM 重新启动后,它再次具有原始模板主机名,而 /etc/sysconfig/ network-scripts/ifcfg-ether 具有正确的设置,正确的 nic (ifcfg-e*) 的 ifcfg 设置尚未实现。

背景

我按照 VMWare 的 CentOS 设置说明进行操作:http : //partnerweb.vmware.com/GOSIG/CentOS_7.html

在添加了一些软件包(包括 vSphere 自定义所需的网络工具)后,我使用我的“模板化脚本”(归功于http://lonesysadmin.net/2013/03/26/preparing -linux-template-vms/步骤):

#!/bin/bash    
# clean yum cache
/usr/bin/yum clean all
#remove udev hardware rules
/bin/rm -f /etc/udev/rules.d/70*
#remove nic mac addr and uuid from ifcfg scripts
/bin/sed -i '/^\(HWADDR\|UUID\)=/d' /etc/sysconfig/network-scripts/ifcfg-eth0
#remove host keys (important step security wise.  similar to system GUID in Windows)
/bin/rm /etc/ssh/ssh_host_*
#engage logrotate to shrink logspace used
/usr/sbin/logrotate -f /etc/logrotate.conf
#and lets shutdown
init 0
Run Code Online (Sandbox Code Playgroud)

不再需要变通方法的受支持版本

  • vSphere 5.5u3(内部版本 3000241 或更高版本)
  • vSphere 6.0 及更高版本

VMWare 的“客户操作系统自定义支持矩阵”http : //partnerweb.vmware.com/programs/guestOS/guest-os-customization-matrix.pdf

Jef*_*rns 6

解决方案:我将 /etc/redhat-release 更改为 vSphere 认可的“Red Hat Enterprise Linux Server release 7.0 (Maipo)”值,现在我可以从 CentOS7 模板部署虚拟机并应用自定义设置。确保首先 rm 现有的 /etc/redhat-release 符号链接。请参阅 mjevange 对优雅的单衬管解决方案的回答。

背景:在使用与上述 CentOS 7 相同的方法创建和部署新的 Oracle Linux 7 (OEL7) 模板并使其正常工作后,我很快意识到问题所在。一探究竟:

Centos7 中默认的 /etc/redhat-release 文件:

 cat /etc/redhat-release
 CentOS Linux release 7.0.1406 (Core)  
Run Code Online (Sandbox Code Playgroud)

RHEL7/OEL7 中的默认 /etc/redhat-release 文件:

 cat /etc/redhat-release
 Red Hat Enterprise Linux Server release 7.0 (Maipo)
Run Code Online (Sandbox Code Playgroud)

(请注意 CentOS 和 Oracle Linux 的版本文件分别是 centos-release 和 oracle-release。不要碰它们,因为它们是发行版特定的版本文件。)


mje*_*nge 5

更新:刚刚测试过,这在 Centos 7.1 中仍然有效,使用 RHEL 6 作为来宾操作系统选项和下面的命令。

仅供参考 redhat-release 与 centos-release 符号链接。如果你编辑redhat-release,你实际上是在修改centos-release。

要遵循解决方案的建议,不要修改发行版特定的版本文件,请改为执行以下操作:

rm -f /etc/redhat-release && touch /etc/redhat-release && echo "Red Hat Enterprise Linux Server release 7.0 (Maipo)" > /etc/redhat-release
Run Code Online (Sandbox Code Playgroud)