Differenze tra vmware-cmd e vmware-vim-cmd
Forse qualcuno si ricorda del mio script per gestire il backup delle macchine virtuali con VMware Server 1.x.
Con VMware Server 2 il
Se in
Ad esempio:
Dove
Naturalmente è più user-friendly identificare le macchine virtuali per nome anziché per ID, soprattutto per il fatto che spostando la VM da un server ad un altro non è detto che l'ID rimangia invariato.
Eseguendo un:
L'output sarà qualcosa del tipo:
Il percorso si ottiene leggendo
(in alternativa sempre nel summary è indicato il percorso del file vmx)
Il percorso del datastore non viene indicato dal summary della virtual machine, ma è tuttavia ottenibile dall'output di:
E il backup su nastro è di nuovo funzionante.
Con VMware Server 2 il
vmware-cmd è stato sostituito da vmware-vim-cmd il cui funzionamento è del tutto diverso.
Se in
vmware-cmd era necessario indicare percorso completo del file vmx, in vmware-vim-cmd è necessario fornire l'ID della macchina virtuale per poter eseguire qualsiasi operazione su di essa.
Ad esempio:
vmware-vim-cmd vmsvc/power.on 32
Dove
32 è l'ID della mia macchina virtuale I3S01.
Naturalmente è più user-friendly identificare le macchine virtuali per nome anziché per ID, soprattutto per il fatto che spostando la VM da un server ad un altro non è detto che l'ID rimangia invariato.
Eseguendo un:
vmware-vim-cmd vmsvc/getallvms
L'output sarà qualcosa del tipo:
Vmid Name File Guest OS Version 16 KMS00 [standard] kms00/Other Linux 2.6.x kernel.vmx other26xLinuxGuest vmx-07 32 I3S01 [standard] i3s01/I3S01.vmx winNetStandardGuest vmx-07 64 I3S02 [standard] i3s02/i3s02.vmx other26xLinuxGuest vmx-07Da qui è abbastanza semplice risalire all'ID partendo dal nome:
#!/bin/sh
vm="$1"
allvms=$(vmware-vim-cmd vmsvc/getallvms)
# Cerca ID della VM
vmid=$(echo "$allvms" | grep $vm)
vmid=$(echo "$vmid" | awk '{ print substr($1, 1, index($vmid, " ")) }')
echo $vmid
if [ ${#vmid} -gt 0 ]; then
vmDirectory=$(vmware-vim-cmd vmsvc/get.summary $vmid | grep vmPathName)
vmDirectory=$(echo "$vmDirectory" | awk '{ print $4 } ')
vmDirectory=$(echo "$vmDirectory" | awk '{ print substr($1, 1, length($1) - 2) }')
vmDirectory=$(echo "$vmDirectory" | awk '{ print substr($1, 1, index($1, "/") - 1) }')
echo "${vmDirectory}/"
fi
Il cui risultato sarà:
i3s00:~# ./vminfo.sh I3S01
32
i3s01/
i3s00:~#
Il percorso si ottiene leggendo
vmPathName restituito dall'output di:
vmware-vim-cmd vmsvc/get.summary 32
(in alternativa sempre nel summary è indicato il percorso del file vmx)
Il percorso del datastore non viene indicato dal summary della virtual machine, ma è tuttavia ottenibile dall'output di:
vmware-vim-cmd hostsvc/datastore/info standard
E il backup su nastro è di nuovo funzionante.

1 Commento
prima di tutto grazie per le spiegazioni; ai "novellini" fanno sempre comodo i piccoli chiarimenti per iniziare...
La mia domanda non riguarda direttamente i backup. Prima di arrivare a fare backup dovrei riuscire a creare una nuova VM partendo da un template. Ora, con "VMware Infrastructure Client" facendo click destro su un template esistente c'é la possibilità di eseguire "Deploy Virtual machine from this Template" e quindi creare una nuova VM.
Io vorrei fare la stessa cosa ma tramite script, quindi usando "vmware-cmd" o "vmware-vim-cmd".
-Voi sapete se c'é una documentazione per "vmware-vim-cmd" perché non ho trovato nessun documento sul sito di VMware..ho trovato solo esempi su altri siti ma non una vera doc su questo tool.
- Che procedura dovrei addottare per creare una nuova VM da un template esistente? Questa può andare? http://www.areanetworking.it/index_docs.php?title=Vmware_Scripting
- una volta creata la nuova VM, come configuro (sempre tramite script) i vari IP e altri paramenti?
Grazie in anticipo per ogni utile consiglio!
Commenta