在debian中自动设置VM的主机名作为VM的名称

时间:2012-09-07 14:27:12

标签: debian vmware

我想将VM的主机名(它是安装了open-vm-tools的debian squeeze系统)自动设置为我在vSphere Client中设置和查看的VM名称。

我试过

    ~# vmtoolsd --cmd "info-get guestinfo.name" 2> /etc/hostname

但该命令返回“No value found”

2 个答案:

答案 0 :(得分:7)

我使用VMware的pyVmomi模块在​​我的Linux客户机操作系统上使用Python脚本完成了这项工作。

首先,我通过读取/sys/devices/virtual/dmi/id/product_uuid处的系统文件来检索系统UUID。然后,我根据find_by_uuid.py中的pyvmomi-community-samples site示例,通过UUID在vCenter服务器中搜索虚拟机。另一种选择是通过IP地址进行搜索,这将更加平台无关。 pyVmomi模块提供了一种FindByIp()方法,可以实现此方法。

#!/usr/bin/env python
import atexit
import pyVmomi
from pyVmomi import vim, vmodl
from pyVim.connect import SmartConnect, Disconnect

si = SmartConnect(host='<host>', port='<port>', user='<user>', pwd='<password>')
atexit.register(Disconnect, si)
file = open('/sys/devices/virtual/dmi/id/product_uuid')
uuid = file.read().strip().lower()
file.close()

search_index = si.content.searchIndex
vm = search_index.FindByUuid(None, uuid, True, False)
#Alternatively: vm = search_index.FindByIp(None, <ip_address>, True)
print vm.summary.config.name

获得虚拟机的名称后,您可以使用客户操作系统的命令(例如hostname)来执行重命名。

答案 1 :(得分:4)

在另一个网站上找到了这个。似乎您必须先设置值才能查询它们。

在某些情况下,您可能希望从VM的操作系统中确定VM的vCenter diaply名称。

如果从syspreped模板克隆多个虚拟桌面以启用该选项以将机器名称设置为与vCenter显示名称相同,则此选项非常有用。它在许多其他场景中也很有用。

但是,默认情况下,无法使用已安装到虚拟机中的标准VM工具执行此操作。

虽然可以在vCenter中的VM对象上设置自定义属性,然后从虚拟机的操作系统中进行查询。

可以使用vSphere PowerCLI运行以下脚本,将自定义属性设置为与vCenter显示名称相同:

$vServer= “vCenter.server.fqdn”
$vmName = “VM display name”

If (-not (Get-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue)) {
Add-PSSnapin VMware.VimAutomation.Core
}

Connect-VIServer $vServer | out-null

$vmSet = GET-VM $vmName | Get-View
$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
$gInfo = New-Object VMware.Vim.optionvalue
$ginfo.Key=”guestinfo.hostname”
$gInfo.Value=$vmSet.Name
$vmConfigSpec.extraconfig += $gInfo
$vmSet.ReconfigVM($vmConfigSpec)

Disconnect-VIServer $vServer -Confirm:$false | out-null

设置完成后,可以使用VM工具和以下命令在VM中查询:

vmtoolsd.exe –cmd “info-get guestinfo.hostname”

当然,这可以添加到脚本中,以针对多台计算机设置此属性。

归功于Richard Parmiter! http://www.parmiter.com/vmware/2012/10/RP781