在 VMware 上自定义从模板部署的 RHEL7 VM 的问题

在 VMware 上自定义从模板部署的 RHEL7 VM 的问题

符合;遵照VMWare 的 VM 定制矩阵,我正在 vSphere 5.5 Update 2d 上测试这一点。我使用 RHEL 7.1 DVD 创建模板,并将 anaconda 指向如下所示的 kickstart:

#version=RHEL7
# Ref: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html

# System authorization information
auth --enableshadow --passalgo=sha512

# Installation
cdrom
text
poweroff

# Run the Setup Agent on first boot
firstboot --disable
ignoredisk --only-use=sda

# Localization
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
timezone America/New_York --isUtc

# Network information
network  --bootproto=static --ip=192.168.3.10 --netmask=255.255.255.0 --gateway=192.168.3.1 --nameserver=192.168.3.1 --hostname=rhel-template.example.com

# Root password
rootpw --iscrypted $6$SNIP

# Storage
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
clearpart --all --initlabel --drives=sda
part /boot --fstype="xfs" --ondisk=sda --size=286
part pv.1378 --fstype="lvmpv" --ondisk=sda --size=16093
volgroup vg_example --pesize=4096 pv.1378
logvol /home  --fstype="xfs" --size=2860 --name=lv_home --vgname=vg_example
logvol /  --fstype="xfs" --size=5600 --name=lv_root --vgname=vg_example
logvol /var  --fstype="xfs" --size=3814 --name=lv_var --vgname=vg_example
logvol swap  --fstype="swap" --size=3814 --name=lv_swap --vgname=vg_example

# VMware OSP
# Ref: http://kb.vmware.com/kb/2075048
repo --name="vmware-osp" --baseurl="http://packages.vmware.com/packages/rhel7/x86_64/"

# Install packages
%packages
@core
open-vm-tools
open-vm-tools-deploypkg
net-tools
%end

%post --log=/root/ks-post.log

# So we could see what is happening
exec < /dev/tty3 > /dev/tty3
chvt 3

#Set some variables
export RHEL_MAJ_VER=$(uname -r | grep -Po '(?<=el).*(?=\.)')
export RHEL_ARCH=$(uname -a | grep "x86_64" > /dev/null && echo 64 || echo 32)

# Install satellite RPM
rpm -i http://satellite.example.com/pub/katello-ca-consumer-latest.noarch.rpm

# Register
subscription-manager register --org="example" --activationkey="rhel${RHEL_MAJ_VER}-${RHEL_ARCH}bit"

# Puppet install
yum update -y
yum install -t -y -e 0 puppet
chkconfig --level 345 puppet on

# Configure puppet
cat > /etc/puppet/puppet.conf <<EOF
[main]
    logdir = /var/log/puppet
    rundir = /var/run/puppet
    ssldir = $vardir/ssl
    pluginsync = true

[agent]
    classfile = $vardir/classes.txt
    localconfig = $vardir/localconfig
    server = satellite.example.com
    report = true
    runinterval = 60
EOF

# RHSM cleanup
subscription-manager unregister
subscription-manager clean

# Truncate logs
>| /var/log/audit/audit.log
>| /var/log/wtmp
>| /var/log/lastlog

# Clean out udev (device naming)
rm -f /etc/udev/rules.d/70*

# Clear out networking
sed -i'' '/^\(HWADDR\|UUID\|IPADDR\|GATEWAY\|NETMASK\|DNS\)/d' /etc/sysconfig/network-scripts/ifcfg-eth* || true
sed -i'' '/^\(HWADDR\|UUID\|IPADDR\|GATEWAY\|NETMASK\|DNS\)/d' /etc/sysconfig/network-scripts/ifcfg-ens* || true

%end

创建 RHEL7 VM 后,我将其转换为模板并基于该模板部署 VM。但是,没有任何自定义操作需要:

  • 网络配置未应用
  • 主机名更改未应用

日志如下所示deployPkg

[root@rhel-template ~]# cat /var/log/vmware-imc/toolsDeployPkg.log
## Starting deploy pkg operation
Deploying /tmp/vmware-root/49b2eefe/imc93D2.tmp
Initializing deployment module.

Cleaning old state file from tmp directory.

EXIT STATE INPROGRESS

Setting deploy error: Error removing lock /tmp/.vmware-deploy.INPROGRESS (No such file or directory)

EXIT STATE Done

Setting deploy error: Error removing lock /tmp/.vmware-deploy.Done (No such file or directory)

EXIT STATE ERRORED

Setting deploy error: Error removing lock /tmp/.vmware-deploy.ERRORED (No such file or directory)

Setting deploy error: Success.

Deploying cabinet file /tmp/vmware-root/49b2eefe/imc93D2.tmp.

Transitioning from state (null) to state INPROGRESS.

ENTER STATE INPROGRESS

Reading cabinet file /tmp/vmware-root/49b2eefe/imc93D2.tmp.

Creating directory /tmp
Creating directory /tmp/.vmware
Creating directory /tmp/.vmware/linux
Creating directory /tmp/.vmware/linux/deploy
Extracting package files.

Launching deployment /usr/bin/perl -I/tmp/.vmware/linux/deploy/scripts /tmp/.vmware/linux/deploy/scripts/Customize.pl /tmp/.vmware/linux/deploy/cust.cfg.

Command to exec : /usr/bin/perl

sizeof ProcessInternal is 56

## Starting deploy pkg operation
Deploying /tmp/vmware-root/49b2eefe/imc93D2.tmp
Initializing deployment module.

Cleaning old state file from tmp directory.

EXIT STATE INPROGRESS

Setting deploy error: Error removing lock /tmp/.vmware-deploy.INPROGRESS (No such file or directory)

EXIT STATE Done

Setting deploy error: Error removing lock /tmp/.vmware-deploy.Done (No such file or directory)

EXIT STATE ERRORED

Setting deploy error: Error removing lock /tmp/.vmware-deploy.ERRORED (No such file or directory)

Setting deploy error: Success.

Deploying cabinet file /tmp/vmware-root/49b2eefe/imc93D2.tmp.

Transitioning from state (null) to state INPROGRESS.

ENTER STATE INPROGRESS

Reading cabinet file /tmp/vmware-root/49b2eefe/imc93D2.tmp.

Creating directory /tmp
Creating directory /tmp/.vmware
Creating directory /tmp/.vmware/linux
Creating directory /tmp/.vmware/linux/deploy
Extracting package files.

Launching deployment /usr/bin/perl -I/tmp/.vmware/linux/deploy/scripts /tmp/.vmware/linux/deploy/scripts/Customize.pl /tmp/.vmware/linux/deploy/cust.cfg.

Command to exec : /usr/bin/perl

sizeof ProcessInternal is 56

Returning, pending output from stdout
Returning, pending output from stderr
Process exited normally after 0 seconds, returned 127
No more output from stdout
No more output from stderr
Customization command output:

Customization process returned with error.

Deployment result = 127

Setting generic error status in vmx.

Transitioning from state INPROGRESS to state ERRORED.

ENTER STATE ERRORED

EXIT STATE INPROGRESS

Setting deploy error: Deployment failed. The forked off process returned error code.

Deployment failed. The forked off process returned error code.

Wait before set enable-nics stats in vmx.

Trying to connect network interfaces, attempt 1
Got VMX response 'queryNicsSupported'
Got VMX response 'disconnected'
Got VMX response 'connected'
The network interfaces are connected on 1 second
Launching cleanup.

Command to exec : /bin/rm

sizeof ProcessInternal is 56

Returning, pending output from stdout
Returning, pending output from stderr
Process exited normally after 0 seconds, returned 0
No more output from stdout
No more output from stderr
Customization command output:

Deploy error: Deployment failed. The forked off process returned error code.

Package deploy failed in DeployPkg_DeployPackageFromFile
## Closing log

我这里漏掉了什么?如果还有其他信息可以帮助找出根本原因,请通过评论提出请求。

答案1

在 VMware 管理员的帮助下,我们发现需要自定义脚本perl。该脚本未随 RHEL7 的@core软件包组一起安装。

总而言之,您需要以下 RHEL7 包才能进行定制工作:

  • open-vm-tools
  • open-vm-tools-deploypkg
  • net-tools
  • perl

希望这对其他人有帮助。

相关内容