关于vmware:VMware-vSphere-系统虚拟机自动化部署

10次阅读

共计 2580 个字符,预计需要花费 7 分钟才能阅读完成。

对于小规模 VMware vSphere 零碎的虚拟机自动化部署问题,Terraform 配合 Packer 这种计划尽管成熟,但略显轻便。实际上用 govc 命令编写的简略脚本,配合 VMware vSphere 的 自定义标准 性能,就齐全能够达到目标。

1. 对于 govc 的应用

govc 是基于 VMware 官网 govmomi 库的一个 vSphere 命令行工具,应用它能够通过命令或脚本,实现对 VMware vSphere 零碎的治理。govc 命令的使用手册见 govc usage。

倡议装置 direnv,应用相似如下的 .envrc 文件来设置 govc 的环境变量:

# vCenter host
export GOVC_URL=vcsa.domain.name
# vCenter credentials
export [email protected]
export GOVC_PASSWORD=your_password
# disable cert validation
export GOVC_INSECURE=true

利用 govc 上传 ISO 文件的命令如下:

govc datastore.upload -ds=Datastore01 ./source.iso /iso/dest.iso

上传 ISO 文件后能够通过如下命令,列出上传的文件:

govc datastore.ls -l -ds=Datastore01 /iso

利用如下命令能够列出零碎中的虚拟机:

govc ls /Datacenter/vm

macOS 客户端装置 VMware Remote Console 后,能够利用如下命令间接启动 VMRC 连贯虚拟机控制台:

open $(govc vm.console "virtual_machine_name")

查看虚拟机硬盘应用状况能够应用如下命令:

govc guest.df -vm "vitual_machine_name"

也能够通过如下命令取得更多的虚拟机信息:

govc vm.info -r "virtual_machine_name"

2. 自定义客户机操作系统

VMware 在官网文档中对 自定义客户机操作系统 有比拟具体的阐述,能够作为参考。自定义标准(Customization Specifications)是蕴含客户机操作系统设置的 XML 文件,能够在 vSphere 零碎的治理界面中通过 Menu => Policies and Profiles => VM Customization Specifications 生成。虚拟机部署期间向客户机操作系统利用自定义标准,能够避免客户机操作系统的计算机名、SID(security identity) 等设置产生抵触。对于自定义标准反对的操作系统,能够参考:Guest OS Customization Support Matrix 文档。

2.1 Windows 模版定制

对于 Windows Server 零碎的模版定制,倡议在客户机操作系统装置后,执行如下两步:

  1. 通过 零碎属性 => 近程 => 容许近程连贯到此计算机 开启远程桌面拜访;
  2. 装置 VMware-Tools。

在此之后就能够关闭系统,把 CD/DVD drive 1 改成 Client Device,并将虚拟机转换成模版。

2.2 Linux 模版定制

对于 Linux 零碎,须要装置 open-vm-tools 和 perl 两个软件包,对于 CentOS 零碎,执行如下命令:

sudo yum install open-vm-tools perl

对于 Ubuntu 须要执行如下命令:

sudo apt install open-vm-tools perl

在装置完必须的软件包后,依照文档 创立 Linux 的自定义标准 的要求,Linux 零碎须要执行以下命令来启用 VMware Tools 配置中的 enable-custom-scripts 选项:

sudo vmware-toolbox-cmd config set deployPkg enable-custom-scripts true

此外,依照 VMware KB59687 的倡议,Ubuntu 零碎还须要执行如下命令来禁用 cloud-init:

sudo touch /etc/cloud/cloud-init.disabled

在此之后,就能够清理操作系统的应用痕迹,并关闭系统。

最初一步同样是把 CD/DVD drive 1 改成 Client Device,并将虚拟机转换成模版。

3. Infrastructure as Code

对于小规模 VMware vSphere 零碎这种简略场景,应用一个简略的 Shell 脚本就能够实现 Infrastructure as Code。

首先在相似如下的文件中依照 Shell 定义变量的形式定义虚拟机的配置参数:

NEWVM="vmname"
DESC="Description of the virtual machine."

TEMP="template-name"

SPEC="CUSTOM-SPEC"

DS="Datastore-name"
HOST="esxi-host.domain.name"

CPU=2
MEM=16384

IP=192.168.1.100
MASK=255.255.255.0
GATE=192.168.1.1
DNS=192.168.1.1

而后通过如下 Shell 脚本加载之前定义的参数,利用 govc 的 vm.infovm.clonevm.customize 以及 vm.power 等子命令,来实现虚拟机的自动化定制部署。

#!/bin/sh

source $1

govc ls /Datacenter/vm | grep -q "$NEWVM" &&
        govc vm.info "$NEWVM" && exit 0

govc vm.clone -vm "$TEMP" \
        -ds="$DS" -host="$HOST" \
        -c=$CPU -m=$MEM \
        -on=false -annotation="$DESC" "$NEWVM"

govc vm.customize -vm $NEWVM -ip $IP -netmask $MASK \
        -gateway $GATE -dns-server "$DNS" \
        "$SPEC"

govc vm.power -on "$NEWVM"

# open "$(govc vm.console"$NEWVM")"

配合 Git 的版本控制,就根本能够满足个别的运维治理需要了。

以上内容相干的脚本,曾经放在 GitHub 上的 mengbo/vmware-infracode 我的项目里,以供参考。

正文完
 0