lunedì 12 gennaio 2009

Hyper-V Script - Identificare le VM connesse ad una Virtual Network con Powershell

powersh Lavorando con una infrastruttura Virtuale abbastanza complessa, con diverse VM e Virtual Network, vi sarà sicuramente capitato di trovarvi nella situazione di dover eliminare una Virtual Network.
Se avete ben documentato la vostra infrastruttura virtuale saprete sicuramente quale VM erano/sono connesse alla Virtual Network che vi apprestate ad eliminare. Già adottare una chiara toponomastica aiuta molto.
Nel caso in cui non abbiate documentato la vostra infrastruttura, oppure vi troviate ad intervenire su una infrastruttura preesistente da un cliente e volete fare ordine...Vi troverete nella situazione di chiedervi: quali VM sono connesse ad una Virtual Network ?

Quali strumenti mette a disposizione Hyper-V?
1. Virtual Network Manager
2. Virtual Machine Settings
3. Powershell

1. Virtual Network
Virtual Network Manager
di Hyper-V non aiuta molto in quanto, chi ha avuto gia' modo di lavorarci, non fornisce questo tipo di informazione. Possiamo solo creare/configurare/eliminare gli oggetti Virtual Network, poco altro. Il livello di informazioni fornite sulla infrastruttura  è pari a ZERO. Non fa al nostro caso.

01

Attenzione: Virtual Network Manager vi permette di eliminare VN in uso senza chiedervi conferma. Una volta selezionata la VN, fatto clic su Remove | OK. Ciao Ciao... Ricrearla con lo stesso nome non serve!


2. Virtual Machine Settings

Tramite Hyper-V Manager dovremmo andare ad analizzare la configurazione di ciascuna VM per vedere a quali Virtual Network è connessa. Operazione che, se si tratta di poche VM, possiamo ancora fare a mano ma, nel caso in cui le VM siano tante - nemmeno poi tante a dir la verità - non arrivate alla terza VM che vi siete belli che stufati. Se poi condiamo il tutto con le classiche distrazioni del caso, si rischia di fare, inutilmente, una frittata. Quindi la modalità, per quanto fattibile, risulta poco pratica e soggetta ad errore (umano).

02 

3. Powershell

Per risolvere questo problema ed eliminare con sicurezza una Virtual Network basta utilizzare Powershell. Basta utilizzare la Hyper-V Management Library, disponibile gratuitamente su CodePlex, e qualche concetto sul funzionamento di Powershell.
Una volta caricata la Hyper-V Management Library sul nostro server Hyper-V, basterà eseguire, con i privilegi amministrativi, il seguente comando:

PS C:\Users\Administrator> Get-VM -server MT-HPV | List-VMNic | foreach ($_) { if ($_.Network -eq "vLAN") { write-host $_.VM }}

dove:
MT-HPV è il server Hyper-V, se lo eseguite direttamente su Hyper-V non è necessario.
vLAN  è il nome della Virtual Network che vogliamo eliminare.

Una volta lanciato il comando Powershell, sarà restituito l'elenco delle VM che sono connesse alla Virtual Network vLAN. Di seguito uno screeshot del risultato:

00
Nel mio caso l'eliminazione della Virtual Network vLAN avrebbe disconnesso ben 10 VM...un bel problema!! 

Nota:
Le VM elencate sono tutte quelle connesse alla Virtual Network vLAN, indipendentemente dal loro stato (in esecuzione, spenta o in pausa). 

Per domande, commenti, suggerimenti sul forum di VMexperts.org

Luca

Luca Conte, MCSE/MCSA:Security, MCT, VMWare VCP
Consulting Services & Professional Training
Virtualization Discovery - http://www.virtualizationdiscovery.com
Virtualization Technical Days - http://days.virtualizationdiscovery.com


Riferimenti
CodePlex - Open Source Project Community
PowerShell management Library for Hyper-V
Ricavare il GUID delle VM con Powershell
Home Page Powershell
KB952627 - Description of the Windows Vista Service Pack 1 Management Tools update for the release version of Hyper-V


Download

Download Download PowerShell management Library for Hyper-V
Download

Download RSAT for Windows Vista Service Pack 1 (32-bit) Edition.

Download

Download RSAT for Windows Vista Service Pack 1 (64-bit) Edition.

Download

Download the Update for Windows Vista (32-bit).

Download

Download the Update for Windows Vista (64-bit).

Etichette: , , , ,

venerdì 13 giugno 2008

Virtual Network con Hyper-V RC1

NWManager Una volta completata l'installazione di Hyper-V RC1, la prima attività che è necessario svolgere per creare l'infrastruttura virtuale è la creazione di Virtual Network.

Le Virtual Network permettono lo scambio dati fra le Virtual Machine, la rete fisica - sfruttando le interfacce di rete del server Hyper-V - ed il server Hyper-V stesso.

Quando connettiamo una Virtual Machine ad una Virtual Network noi eseguiamo l'operazione che nel mondo reale corrisponde a connettere il cavo di rete di un server fisico ad una porta dello switch

Possiamo tranquillamente pensare ad una Virtual Network come costituita da uno Switch Virtuale a cui sono connesse Virtual Machine.

Le logiche che stanno alla base di uno switch virtuale sono equivalenti a quelle di uno switch fisico; la principale differenza fra i due è che il primo è interamente software, il secondo è in parte software e in parte hardware. 

Virtual Server 2005 vs Hyper-V:
Le virtual Network di VS 2k5 incorporano anche un DHCP Server; in Hyper-V non è disponbile. 
VS 2k5 salva le virtual network come file XML con estensione VNC; Hyper-V salva la configurazione delle Virtual Network nel Registry di Windows Server 2008.
VS 2k5 non supporta le VLAN; Hyper-V invece Sì.

Il processo di creazione di una Virtual Network con Hyper-V è estremamente semplice. Le uniche scelte che dovremo fare quando creiamo una Virtual Network riguardano il nome ed il tipo - Internal, Private, External -; al massimo definire il VLAN ID - se usiamo VLAN -. Quindi la difficoltà è scegliere la giusta Virtual Network.

Tipi di Virtual Network
Possiamo scelgliere fra uno dei tre tipi disponibili:

  • Internal
  • Private
  • External

New Virtual Network Virtual Network Internal
La Virtual Network di tipo Internal mette in comunicazione le virtual machine e l'host Hyper-V su cui sono in esecuzione.

VS 2k5 vs Hyper-V: In VS2k5 questo stesso comportamento è ottenibile con una virtual network di tipo External associata al Microsoft Loopback Adapter. Microsoft Loopback Adapter deve essere installato, in quanto non è presente di default. Per l'installazione del Microsoft Loopback Adapter consultare l'articolo KB842561. 

Virtual Network Private
Questo tipo di virtual network permette di creare una rete virtuale completamente isolata. Possono comunicare fra loro SOLO Virtual Machine. Ideale per effettuare dei test senza mettere a rischio la rete di produzione.

VS 2k5 vs Hyper-V: In VS2k5 questo stesso tipo di comportamento è ottenibile con una Virtual Network di tipo Internal.  

Virtual Network External
In questo caso le VM possono dialogare con la nostra rete di produzione tramite l'interfaccia di rete dell'Host Hyper-V. L'interfaccia di rete dell'host Hyper-V da utilizzare è definita durante l'installazione di Hyper-V stesso. L'interfaccia di rete fisica fa solo da tramite fra le Virtual Machine ed i server/client fisici.

VM-Network Nota: Nessun tipo di servizio o protocollo - ad eccezione del Microsoft Virtual Network Switch Protocol - è associato alla interfaccia di rete selezionata durante l'installazione di Hyper-V

Il TCP/IP delle Virtual Machine, affinchè possano comunicare con gli host della rete di produzione, dovrà essere configurato conformemente al piano di indirizzamento della rete fisica. Questa operazione sarà semplificata se utilizziamo un server DHCP. Le Virtual Machine potranno così uscire su Internet, essere aggiunte al dominio di produzione, scaricare patch, aggiornamenti software e policy al pari dei server e client fisici.

IMPORTANTE: Le Virtual Machine, una volta connesse alla rete di produzione, sono indistinguibili dai server/client fisici. Quindi è necessario fare molta attenzione quando si connettono Virtual Machine a Virtual Network di tipo External.

In questo breve articolo abbiamo introdotto i tipi di Virtual Network creabili con Microsoft Hyper-V, nel prossimo vedremo la creazione di una Virtual Machine.

Luca

Etichette: ,