可以使用 PowerCLI cmdlet 管理 vSphere Auto Deploy,以创建可将 ESXi 主机与 vCenter 目标上的各个对象相关联的规则。
可以使用 PowerCLI cmdlet 管理 vSphere Auto Deploy,进而创建将主机与映像配置文件、主机配置文件、自定义脚本以及 vCenter Server 目标上的位置相关联的规则。还可以通过测试规则合规性以及修复合规性问题来更新主机。
使用 PowerCLI cmdlet 管理 vSphere Auto Deploy
可以使用 PowerCLI cmdlet 管理 vSphere Auto Deploy,进而创建将主机与映像配置文件、主机配置文件、自定义脚本以及 vCenter Server 目标上的位置相关联的规则。还可以通过测试规则合规性以及修复合规性问题来更新主机。
通过使用 PowerCLI 执行 vSphere Auto Deploy 过程的概览
要开始使用 vSphere Auto Deploy,您需要了解 vSphere Auto Deploy 工作原理、安装 vSphere Auto Deploy 服务器、安装 PowerCLI、编写置备主机的 PowerCLI 规则以及打开要使用指定的映像配置文件进行引导的主机。可以自定义映像配置文件、主机配置文件和 vCenter Server 位置。
有关帮助您设置第一个 vSphere Auto Deploy 环境的逐步操作,请参见vSphere Auto Deploy的vSphere PowerCLI场景。
要在环境中使用 vSphere Auto Deploy 成功置备主机,可以遵循以下步骤。
- 部署 vCenter Server。
vSphere Auto Deploy 服务器包括在内。
- 配置 vSphere Auto Deploy 服务启动类型。
- 安装 PowerCLI,它包含 vSphere Auto Deploy 和 vSphere ESXi Image Builder cmdlet。
请参见配置vSphere ESXi Image Builder、使用 vSphere Auto Deploy Cmdlet 和使用 VMware.Image Builder Cmdlet。
- 查找包含要部署到主机的 VIB 的映像配置文件。
- 通常,将包含所需软件的库添加到 PowerCLI 会话,然后从其中一个库中选择映像配置文件。
- 如果要创建自定义映像配置文件,可以使用 vSphere ESXi Image Builder cmdlet 克隆现有映像配置文件,然后将自定义 VIB 添加到克隆。将自定义映像配置文件添加到 PowerCLI 会话。
仅当必须添加或移除 VIB 时,才必须使用 vSphere ESXi Image Builder 进行自定义。在大多数情况下,可以将 VMware 驻留映像配置文件的库作为 URL 添加到 PowerCLI 会话。
- 启动 PowerCLI 会话,连接到已注册了 vSphere Auto Deploy 的 vCenter Server 系统。
- 使用 New-DeployRule PowerCLI cmdlet 编写一个将映像配置文件分配给一个主机、同一模式指定的多个主机或所有主机的规则。
New-DeployRule -Name "testrule" -Item image-profile -AllHosts
请参见将映像配置文件分配给主机。
注: vSphere Auto Deploy 已经过优化,可以将具有固定 MAC 地址的主机置备到 DHCP(有时称作 DHCP 预留)中的 IP 地址映射。如果要使用静态 IP 地址,则必须设置主机配置文件,以提示主机自定义。有关详细信息,请参见 《vSphere 主机配置文件》文档。 - 打开要置备的主机的电源。
- 为主机配置文件设置置备为引用主机的主机。
可以指定引用主机的 syslog 设置、防火墙设置、存储和网络连接等。
- 为主机配置文件设置置备为引用主机的主机。
可以指定引用主机的 syslog 设置、防火墙设置、存储和网络连接等。请参见设置 vSphere Auto Deploy 引用主机。
- 创建并导出引用主机的主机配置文件。
请参见《主机配置文件》文档。
- 要使用主机配置文件置备多台主机,请使用 Copy-DeployRule cmdlet 编辑先前创建的规则。
可以修改规则,使得不仅分配映像配置文件,还分配主机配置文件、vCenter Server 位置和自定义脚本包。
Copy-DeployRule -DeployRule "testrule" -ReplaceItem my_host_profile_from_reference_host,my_target_cluster -ReplacePattern "ipv4=192.XXX.1.10-192.XXX.1.20"
其中,my_host_profile_from_reference_host 是引用主机配置文件的名称,而 my_target_cluster 是目标集群的名称。
- 执行测试,修复合规性操作,以修复主机。
请参见测试和修复规则合规性。
- 验证您所置备的主机是否满足以下要求。
- 每个主机已连接到 vCenter Server 系统。
- 主机不处于维护模式。
- 主机不存在合规性错误。
- 每个具有主机配置文件(要求用户输入)的主机都具有最新的主机自定义信息。
修正主机关联和合规性问题,然后重新引导主机,直到所有主机都满足要求。
有关引导过程的简介、首次引导和后续引导之间的区别以及使用主机自定义的概述,请阅读。
使用 vSphere Auto Deploy Cmdlet
vSphere Auto Deploy cmdlet 作为 Microsoft PowerShell cmdlet 实施并包含在 PowerCLI 中。vSphere Auto Deploy cmdlet 的用户可以利用所有的 PowerCLI 功能。
具有丰富经验的 PowerShell 用户可以像使用其他 PowerShell cmdlet 一样使用 vSphere Auto Deploy cmdlet。如果您是 PowerShell 和 PowerCLI 的新用户,以下提示可能对您有所帮助。
您可以在 PowerCLI shell 中键入 cmdlet、参数和参数值。
- 通过运行 Get-Help
cmdlet_name
获取有关任何 cmdlet 的帮助。 - 请记住,PowerShell 不区分大小写。
- 对 cmdlet 名称和参数名称使用 Tab 自动补全。
- 使用 Format-List 或 Format-Table,或者它们的缩写 fl 或 ft 格式化任何变量和 cmdlet 输出。有关详细信息,请运行 Get-Help Format-List cmdlet。
通过名称传递参数
Copy-DeployRule -DeployRule testrule -ReplaceItem MyNewProfile
《vCenter Server 安装和设置》文档中的大多数示例均按名称传递参数。
将参数作为对象传递
如果希望执行脚本操作并实现自动化,则可以将参数作为对象传递。将参数作为对象传递对于返回多个对象和返回单个对象的 cmdlet 都有用。请参见下面的示例:
- 将封装主机规则集合规信息的对象绑定到变量。
$tr = Test-DeployRuleSetCompliance MyEsxi42
- 查看对象的 itemlist 属性以查看规则集中的规则与主机当前使用的规则之间有何差异。
$tr.itemlist
- 通过将 Repair-DeployRuleSetCompliance cmdlet 与变量结合使用来修复主机,从而使用修改后的规则集。
Repair-DeployRuleSetCompliance $tr
该示例将在下次引导主机时修复主机。
vSphere Auto Deploy PowerCLI Cmdlet 概览
可以使用 PowerCLI 中包含的一组 PowerCLI cmdlet 指定一些规则,将映像配置文件和主机配置文件分配给主机。
如果您对 PowerCLI 不甚了解,请先阅读 PowerCLI 文档并查看使用 vSphere Auto Deploy Cmdlet。可以在 PowerShell 提示符下获取有关任何命令的帮助。
- 基本帮助:Get-Help cmdlet_name
- 详细帮助:Get-Help cmdlet_name -Detailed
命令 | 描述 |
---|---|
Get-DeployCommand | 返回 vSphere Auto Deploy cmdlet 的列表。 |
New-DeployRule | 使用指定的项和模式创建新规则。 |
Set-DeployRule | 使用指定的项和模式更新现有规则。无法更新属于规则集的规则。 |
Get-DeployRule | 检索具有指定名称的规则。 |
Copy-DeployRule | 克隆和更新现有规则。 |
Add-DeployRule | 将一个或多个规则添加到工作规则集中,默认情况下也添加到活动规则集中。使用 NoActivate 参数将规则仅添加到工作规则集中。 |
Remove-DeployRule | 从工作规则集和活动工作集中移除一个或多个规则。将此命令与 -Delete 参数一起使用,将完全删除规则。 |
Set-DeployRuleset | 明确设置工作规则集中的规则列表。 |
Get-DeployRuleset | 检索当前工作规则集或当前活动规则集。 |
Switch-ActiveDeployRuleset | 激活规则集,使得任何新请求都通过规则集进行评估。 |
Get-VMHostMatchingRules | 检索与某个模式匹配的规则。例如,可以检索应用到一个或多个主机的所有规则。此 cmdlet 主要用于调试。 |
Test-DeployRulesetCompliance | 检查与指定主机关联的项是否与活动规则集相符。 |
Repair-DeployRulesetCompliance | 根据 Test-DeployRulesetCompliance 的输出情况,此 cmdlet 将为 vCenter Server 清单中的每个主机更新映像配置文件、主机配置文件和位置。此 cmdlet 可能会应用映像配置文件、应用主机配置文件或将主机移动到 vCenter Server 系统上预先指定的文件夹或集群。 |
Apply-EsxImageProfile | 将指定的映像配置文件与指定的主机关联。 |
Get-VMHostImageProfile | 检索指定主机正在使用的映像配置文件。此 cmdlet 不同于 vSphere ESXi Image Builder 中的 Get-EsxImageProfile cmdlet。 |
Repair-DeployImageCache | 仅当意外删除 vSphere Auto Deploy 映像缓存时才使用此 cmdlet。 |
Get-VMHostAttributes | 检索 vSphere Auto Deploy 服务器评估规则时使用的主机的属性。 |
Get-DeployMachineIdentity | 返回字符串值,vSphere Auto Deploy 使用该值将 vCenter Server 中的 ESXi 主机逻辑链接到物理机。 |
Set-DeployMachineIdentity | 将 vCenter Server 数据库中的主机对象逻辑链接到物理机。使用此 cmdlet 添加主机,而无需指定规则。 |
Get-DeployOption | 检索 vSphere Auto Deploy 全局配置选项。此 cmdlet 当前支持 vlan-id 选项,该选项为使用 vSphere Auto Deploy 置备的主机的 ESXi 管理网络指定默认的 VLAN ID。仅当主机在不使用主机配置文件的情况下引导时,vSphere Auto Deploy 才使用该值。 |
Set-DeployOption | 设置全局配置选项的值。当前支持用于设置 ESXi 管理网络的默认 VLAN ID 的 vlan-id 选项。 |
Add-ProxyServer | 向 vSphere Auto Deploy 数据库添加代理服务器。运行带有 -Address 参数的命令以指定 IPv4 或 IPv6 地址。该地址可以包括端口号。 |
List-ProxyServer | 列出当前注册到 vSphere Auto Deploy 的代理服务器。 |
Delete-ProxyServer | 从注册到 vSphere Auto Deploy 的代理服务器的列表中删除一个或多个代理服务器。可以运行带有 -id 参数(来自代理服务器列表)或带有 -Address 参数(通过指定要删除的代理服务器的 IPv4 或 IPv6 地址)的命令。 |
Add-ScriptBundle | 向 vSphere Auto Deploy 服务器添加一个或多个脚本包。 |
Get-ScriptBundle | 检索 vSphere Auto Deploy 服务器上可用的脚本包列表以及脚本包包含的脚本。 |
Remove-ScriptBundle | 从 vSphere Auto Deploy 移除脚本包。适用于 vSphere 版本 6.7 及更高版本。 |
Get-CustomCertificate | 检索上载到 AutoDeploy 的自定义主机证书。必须使用 -HostId [MAC_Address | BIOS_UUID] 参数运行命令。首次添加自定义证书时,将看不到此 cmdlet 返回的任何证书。 |
List-CustomCertificates | 检索有关 Auto Deploy 使用的所有自定义主机证书的信息。该列表提供证书名称、Host ID 和 Associated Host Name 的详细信息,反映了 Auto Deploy 服务器的 vCenter Server 的名称。 |
Add-CustomCertificate | 将自定义证书添加到 VMware 端点证书存储,并将其与 ESXi 主机关联。证书在主机重新引导后变为活动状态。可以使用 Get-CustomCertificate cmdlet 检索自定义主机证书密钥。您可以使用 -HostId [MAC_Address | BIOS_UUID] 参数运行命令,以将证书与主机关联,从而指定 -Key [file:///path/to/key.key] 和 -Cert [file:///path/to/cert.crt]。使用此 cmdlet 需要对 vCenter Server 的根文件夹具有 AutoDeploy.Rule.Create 特权。 |
Remove-CustomCertificate | 从 Auto Deploy 中移除一组自定义主机证书。将从数据库中删除证书条目,并从文件存储中移除证书文件。必须重新引导已使用自定义证书引导的主机才能接收新证书。您必须至少提供一个 -Cert 或 -HostId 参数。使用此 cmdlet 需要对 vCenter Server 的根文件夹具有 AutoDeploy.Rule.Create 特权。 |
将映像配置文件分配给主机
必须先创建规则,将映像配置文件分配给要使用 vSphere Auto Deploy 进行置备的每个主机,然后才能置备主机。
vSphere Auto Deploy 可扩展性规则强制接受级别为由社区支持的 VIB 只能包含特定预定义位置中的文件,例如 ESXCLI 插件路径、jumpstart 插件路径等。如果将其他位置中的 VIB 添加到映像配置文件,将会发出警告。可以使用 force 选项替代警告。
如果在包含接受级别为由社区支持的 VIB 的映像配置文件上调用 New-DeployRule cmdlet 违反规则,请先设置 $DeployNoSignatureCheck = $true
,再添加映像配置文件。进行该设置后,系统会忽略签名验证,但不执行扩展性规则检查。
过程
结果
主机从 iPXE 引导时,将向控制台报告计算机属性。编写部署规则时,请使用相同的属性格式。
****************************************************************** * Booting through VMware AutoDeploy... * * Machine attributes: * . asset=No Asset Tag * . domain=vmware.com * . hostname=myhost.mycompany.com * . ipv4=XX.XX.XXX.XXX * . mac=XX:Xa:Xb:Xc:Xx:XX * . model=MyVendorModel * . oemstring=Product ID: XXXXXX-XXX * . serial=XX XX XX XX XX XX... * . uuid=XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX * . vendor=MyVendor ******************************************************************
下一步做什么
- 对于已使用 vSphere Auto Deploy 置备的主机,请执行合规性测试和修复操作,以使用新的映像配置文件对其进行置备。请参见测试和修复规则合规性。
- 打开未置备的主机,以使用新的映像配置文件对其进行置备。
编写规则并给主机分配主机配置文件
vSphere Auto Deploy 可以将一个主机配置文件分配给一个或多个 ESXi 主机。
多数情况下,将主机分配给集群,而不用明确指定主机配置文件。主机使用集群的主机配置文件。
前提条件
- 安装 PowerCLI 和所有必备软件。有关信息,请参见 vCenter Server 安装和设置。
- 导出要使用的主机配置文件。
过程
下一步做什么
- 通过对已由 vSphere Auto Deploy 置备的主机执行合规性测试和修复操作,将其分配给新的主机配置文件。有关详细信息,请参见测试和修复规则合规性。
- 打开未置备的主机电源,以使用主机配置文件对其进行置备。
编写规则并将主机分配给文件夹或集群
vSphere Auto Deploy 可以将主机分配给文件夹或集群。当主机引导时,vSphere Auto Deploy 会将其添加到 vCenter Server 上的指定位置。分配给集群的主机将继承集群的主机配置文件。
前提条件
- 准备系统并安装 Auto Deploy 服务器。有关详细信息,请参见为系统准备 vSphere Auto Deploy。
- 确认选择的文件夹位于数据中心或集群中。您无法将主机分配到独立的顶层文件夹中。
过程
下一步做什么
- 通过执行测试和修复合规性操作,将已由 vSphere Auto Deploy 置备的主机分配给新的文件夹或集群位置。请参见测试和修复规则合规性。
- 打开未置备的主机电源,将其添加到指定的 vCenter Server 位置。
通过运行自定义脚本配置无状态系统
可通过将自定义脚本与 vSphere Auto Deploy 规则相关联来使用 vSphere Auto Deploy 配置一个或多个主机。
脚本在主机的初始 ESXi 引导工作流后按字母顺序运行。
前提条件
- 确认要与 vSphere Auto Deploy 规则关联的脚本包采用 .tgz 格式、最大大小为 10 MB 且以 Python 或 BusyBox ash 脚本语言编写。
过程
下一步做什么
- 对于已使用 vSphere Auto Deploy 置备的主机,请执行合规性测试和修复操作,以使用新的脚本对其进行置备。请参见测试和修复规则合规性。
- 打开未置备的主机,以使用新的脚本对其进行置备。
测试和修复规则合规性
测试新的或修改的规则的合规性并相应地进行修复,因为 vSphere Auto Deploy 规则集中的更改不会自动更新。
前提条件
- 准备系统并安装 Auto Deploy 服务器。有关详细信息,请参见为系统准备 vSphere Auto Deploy。
- 验证基础架构是否包含一个或多个使用 vSphere Auto Deploy 置备的 ESXi 主机,并验证安装了 PowerCLI 的主机是否可以访问这些 ESXi 主机。
过程
下一步做什么
如果您更改的规则指定了清单位置,则更改会在您修复合规性时生效。对于其他所有更改,请重新引导主机以使 vSphere Auto Deploy 应用新规则并实现规则集与主机之间的合规性。
将缓存代理服务器地址注册到 vSphere Auto Deploy
同时引导大量无状态主机将对 vSphere Auto Deploy 服务器造成过重的负载。可以在 vSphere Auto Deploy 服务器和注册到 vSphere Auto Deploy 的一个或多个代理服务器之间对请求进行负载平衡。