1

VMのホスト名(open-vm-toolsがインストールされたDebianスクイーズシステム)を、vSphereClientで設定して表示したVMの名前に自動的に設定したいと思います。

私は試した

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

しかし、コマンドは「値が見つかりません」を返します

4

2 に答える 2

7

これは、VMwareのpyVmomiモジュール を使用して、LinuxゲストオペレーティングシステムでPythonスクリプトを使用して行いました。

まず、のシステムファイルを読み取ってシステムUUIDを取得しました/sys/devices/virtual/dmi/id/product_uuid次に、 pyvmomi-community-samplesサイトのfind_by_uuid.pyの例に基づいて、UUIDを介してvCenterサーバーで仮想マシンを検索しました。もう1つの方法は、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)を使用して名前の変更を実行できます。

于 2014-08-15T23:28:04.477 に答える
4

別のサイトでこれを見つけました。クエリを実行する前に、値を設定する必要があるようです。

VMのOS内からVMのvCenterdiaply名を決定したい場合があります。

これは、sysprepedテンプレートから複数の仮想デスクトップのクローンを作成して、マシン名をvCenterの表示名と同じに設定するオプションを有効にする場合に役立ちます。また、他の多くのシナリオでも役立つ可能性があります。

ただし、デフォルトでは、仮想マシンにインストールされている標準のVMツールを使用してこれを行う方法はありません。

ただし、vCenterのVMオブジェクトにカスタム属性を設定し、仮想マシンのOS内からこれをクエリすることは可能です。

次のスクリプトは、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”

もちろん、これをスクリプトに追加して、複数のマシンに対してこの属性を設定することもできます。

クレジットはRichardParmiterに送られます! http://www.parmiter.com/vmware/2012/10/RP781

于 2012-11-02T19:34:33.600 に答える