VMware 虚拟机自定义规范 - 更优雅的虚拟机开局

本文最后更新于 2024年5月19日 下午

介绍

虚拟机自定义规范可以在你克隆虚拟机的时候在vCenter 的Web界面设定虚拟机的主机名、单/多网卡IP的IP和网关、DNS服务器、唯一标识符重置(SID等)、硬盘分区自动扩容、设定密码、密钥、时区等信息。

让管理员不需要进入虚拟机系统内部进行配置,可以直接创建使用。提高业务开通效率。

VMware 系列文章:https://songxwn.com/categories/vmware/

前置要求

VMware Tools 要求

要在克隆或部署期间自定义客户机操作系统,必须将最新版本的 VMware Tools 安装在虚拟机或模板上。有关 VMware Tools 支持列表的信息,请参见《VMware 产品互操作性列表》,网址为 http://www.vmware.com/resources/compatibility/sim/interop_matrix.php。

确认已安装 VMware Tools 版本 11.3.0 或更高版本。(open-vm-tool)

确认已安装 cloud-init 版本 21.1 或更高版本。(Linux)

虚拟磁盘要求

所自定义的客户机操作系统必须安装在作为虚拟机配置中的 SCSI 节点 0:0 连接的磁盘上。

Windows 要求

Windows 客户机操作系统的自定义要求虚拟机在 ESXi 主机运行版本 3.5 或更高版本上运行。

Linux 要求

自定义 Linux 客户机操作系统要求 Linux 客户机操作系统中已安装 Perl。

支持系统: VMware Compatibility Guide

创建

使用

  • 在从模板新建虚拟机的时候,克隆选项勾选自定义操作系统 。

  • 在克隆虚拟机的时候,克隆选项勾选自定义操作系统 。

运行自定义脚本:

确认已安装 VMware Tools 版本 10.1.0 或更高版本。如果 VMware Tools 版本低于 10.1.0,则您尝试运行自定义脚本时,自定义将失败。

在 VMware Tools 配置中,出于安全原因,enable-custom-scripts 选项默认处于取消激活状态。尝试在 enable-custom-scripts 选项处于取消激活状态的情况下运行自定义脚本时,自定义将失败并显示自定义错误。

例如,要启用 enable-custom-scripts 选项,必须使用 config 命令以 root 用户身份运行 vmware-toolbox-cmd:

1
2
3
4
vmware-toolbox-cmd config set deployPkg enable-custom-scripts true
cat /etc/vmware-tools/tools.conf
[deployPkg]
enable-custom-scripts = true

要验证是否正确设置了该选项,可以运行以下命令:

vmware-toolbox-cmd config get deployPkg enable-custom-scripts

[deployPkg] enable-custom-scripts = true

有关详细信息,请参见《VMware Tools 用户指南》。

要使用 cloud-init 元数据和用户数据自定义虚拟机的客户机操作系统,请满足以下必备条件:

确认已安装 VMware Tools 版本 11.3.0 或更高版本。

确认已安装 cloud-init 版本 21.1 或更高版本。

已测试操作系统

  • Ubuntu系列

  • Debian系列

  • Centos 7

  • Rocky 8-9

  • Windows Server系列

Linux 自定义脚本示例

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
if [ x$1 = x"precustomization" ]; then
echo "Do Precustomization tasks"

elif [ x$1 = x"postcustomization" ]; then
echo "Do Postcustomization tasks"
growpart /dev/sda 2
xfs_growfs /dev/sda2
echo "root:songxwn.com"|chpasswd
rm -f /etc/machine-id
systemd-machine-id-setup
fi
1
2
3
4
5
6
7
8
9
10
# 主要执行命令如下
growpart /dev/sda 2
# 扩容分区
xfs_growfs /dev/sda2
# 文件系统扩容
echo "root:songxwn.com"|chpasswd
# 配置root密码
rm -f /etc/machine-id
systemd-machine-id-setup
# 随机初始化ID

Windows 自定义命令执行示例

创建示例

需要在命令上加cmd /c 即可执行。

Rocky / RHEL 8-9 需要安装额外包

RHEL 8系列的以上版本要求按照以下包。

1
2
dnf install network-scripts
dnf install perl

低于 6.7 U3p 和 7.0 U3c 的版本,不支持 Rocky 系统的自定义。

https://knowledge.broadcom.com/external/article?legacyId=86163

Rocky Linux 9 定制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26


systemctl disable --now firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0
dnf install tree vim bash-completion tar wget -y

dnf install open-vm-tools cloud-utils-growpart perl wget epel-re* -y

dnf install iperf3 -y

dnf remove --oldinstallonly --setopt installonly_limit=2 kernel

dnf clean all


# 清理系统日志
systemctl stop systemd-journald.socket
find /var/log -type f -exec rm -rf {} \;

# 设置持久化保存日志的目录
mkdir -p /var/log/journal

# 清除历史命令
echo /dev/null > ~/.bash_history ; history -c



VMware 虚拟机自定义规范 - 更优雅的虚拟机开局
https://songxwn.com/VMware-customization-specification/
作者
Song
发布于
2024年5月8日
更新于
2024年5月19日
许可协议