目前,我们正在使用 VMware ESXi 系统来托管一些 RHEL 7.2 虚拟机,并将我们的产品安装到这些虚拟机上以进行测试。我们遇到的问题是,生成这些虚拟机的过程(或者更确切地说,在这些虚拟机上安装我们的产品)是手动的,并且需要在此过程中进行人工干预。
安装基于两个 iso 文件:第一个是带有自定义 kickstart 文件的 RHEL 7.2 iso,但在安装操作系统后,我们需要交换 iso 并使用第二个 iso 文件来安装其他依赖项,由于法律原因我们不能将这些依赖项包含在第一个 iso 中(至少我被告知是这样)。
当您必须向不同的开发人员提供多个虚拟机时,这个过程显然变得繁琐,并且无法自动化该过程并避免任何用户交互。
话虽如此,我已经搜索了不同的解决方案,如 Cobbler、Spacewalk、Puppet、FAI......并且我想知道哪种工具最适合我所描述的任务,以便我可以自动化该过程。
答案1
使用 PowerCLI 来自动化此过程。这不是一个简单的项目,但它非常灵活,可以为未来的 VM 自动化奠定基础。工作流程看起来像这样
- 部署已安装 RHEL 7.2 的模板并打开电源
- 等待部署完成(这可能需要一个带有调用
sleep()
和测试的 powershell 循环来确定设置是否完成,或者登录是否成功。 - 更改已安装的 ISO
- 远程 Powershell 进入 VM 以完成设置。
我将详细阐述步骤 3,因为它与您的问题最相关。
#Setup for your Environment
$vcenter = "yourVcenterServer"
$vmame = "yourVMName"
$pathOnDatastoreToIso = "/path/to/iso/on/datastore.iso"
#Change Mounted Iso
Connect-VIServer $vcenter
$diskDriveForYourVM = get-cdDrive -vm $vmname
$diskDriveForYourVM | set-cdDrive -StartConnected:$true -Connected:$true -IsoPath $pathOnDatastoreToIso