venerdì 22 aprile 2016

Credenziali nascoste in PowerCli


In questi giorni mi stavo occupando di sistemare degli script in PowerCLI che avevo preparato anni fa e mi è subito balzata agli occhi una cosa ORRIBILE... tutte le credenziali erano in chiaro all'interno dello script :-O

Sorvolando sulle considerazioni che a quei file l'accesso è ovviamente limitato ad una ristretta cerchia di persone (amministratori di sistema) mi sono comunque posto il dubbio se non esistesse un metodo migliore per fare quanto mi serviva... la necessità era di poter lanciare gli script in modalità unattended ma di non essere costretto a scrivere le credenziali direttamente in chiaro nel testo del comando.

Frugando sulla rete mi sono imbattuto in una serie di articoli che presentavano una funzionalità specifica di PowerCLI fatta apposta per accedere al vCenter da script senza essere costretti al salvataggio in chiaro della password che verrà recuperata da un xml esterno allo script dove sarà salvata in modo crittografato.

Nel file xml in realtà rimarranno in chiaro lo username e l'indirizzo dello stesso vCenter ma mi permetto di ritenere il fatto decisamente meno grave :-)

Passando a descrivere la parte operativa per prima cosa sarà necessario creare il suddetto file xml grazie al comando seguente:

New-VICredentialStoreItem -Host VCServerName -Password PASSWORD -User domain\username -file c:\cred.xml

Ora che abbiamo il nostro "repository" delle credenziali di accesso vediamo come richiamarle per poter effettuare il login dallo script al nostro vCenter.

Il tutto si risolve in un paio di righe di codice:

- la dichiarazione di una variabile che identifica l'oggetto dove sono archiviate le credenziali;
- richiamare le credenziali attraverso delle variabili che dipendono da quella precedentemente definita.

Ossia:

$creds = Get-VICredentialStoreItem -file C:\cred.xml

Connect-VIServer -Server $creds.Host -user $creds.User -password $creds.Password


Ovviamente nulla vieta, nel caso sia necessario effettuare diversi login o login con utenti diversi di moltiplicare alla bisogna i file xml ricordandosi di specificare la variabile "principale" con un nome differente e di conseguenza le variabili "figlio".

Ora i vostri script non riporteranno più le password per l'accesso ai vCenter e non ci sarà nemmeno bisogno che voi siate davanti al terminale per inserirla al momento giusto :-D

mercoledì 23 marzo 2016

Invocare gli script dentro le VM

A volte capita che sia necessario effettuare delle modifiche a delle VMs ma non si possa, o semplicemente non si voglia :-P, accedere ad una ad una per lanciare il comando.

Nel mio caso si trattava di una modifica da apportare nel corso di una operazione totalmente gestita da script e che pertanto non era possibile compiere a mano.

Ed ecco che il comando Invoke-VMScript viene meravigliosamente in aiuto in questi casi permettendo di sfruttare la potenza della hypervisor per arrivare fino dentro le macchine virtualizzate.

Per poterlo utilizzare ovviamente ci si dovrà connettere via powerCLI al vCenter dove sono ospitate le macchine sulle quali vogliamo lanciare i comandi o in alternativa lanciare il powershell classico e caricare l'Add-in di VMware con il comando "Add-Pssnapin VMware.VimAutomation.Core" (rimane ovvio che sul PC dal quale stiamo lanciando il comando, in entrambi i casi il PowerCLI di VMware debba essere installato).

In seguito basterà chiamare il comando Invoke-VMScript specificando la VM sulla quale vogliamo intervenire e indicando (tra virgolette) dopo il parametro -ScriptText il comando completo di path che verrà eseguito all'interno del sistema operativo. 
E' possibile specificare che tipo di script vogliamo lanciare o meglio, il comportamento di default in caso di sistema operativo guest windows è quello di lanciare un Powershell quindi, se volessimo modificare tale comportamento saremmo costretti a specificarlo.
Infine dobbiamo fornire le credenziali per effettuare l'autenticazione al sistema operativo guest. Sarà necessario fornire un'utenza e una password che siano autorizzati ad eseguire il comando che vogliamo lanciare ;-P.

Invoke-VMScript restituirà in una graziosa cornicetta ASCII l'output del comando lanciato all'interno del sistema operativo. Se non è previsto che il comando abbia un output, o l'output possa essere troppo verboso è possibile sfruttare un piping verso il nulla :-)

Nell'esempio sotto riportato vado ad aggiungere all'interfaccia Ethernet0 di un sistema Windows Server 2012 un ulteriore indirizzo IP (10.0.0.1/24) sfruttando il comando netsh e l'utente amministrativo del sistema.
Come si può vedere, visto che il comado netsh non prevede output, ho preferito redirigere tutto a quello che in linux sarebbe il /dev/null ma che in powershell diventa out-null.

Invoke-VMScript -VM TEST-VM -ScriptText "C:\Windows\System32\netsh.exe interface ipv4 add address Ethernet0 10.0.0.1 255.0.0.0" -ScriptType BAT -GuestUser "administrator" -GuestPassword "Pa$$w0rd" | out-null

Qui sotto riporto il link al techpaper di VMware relativo al comando:

lunedì 21 marzo 2016

Powershell da task manager di windows

Ok... ore che lavori al tuo script in powershell lo provi, lo "debugghi", lo riprovi ancora un'ultima volta e ora... arriva il momento di vederlo camminare con le sue "gambette" :-D

Lo affidi alle amorevoli cure del task manager di Windows!

Ok ma come si fa?

Sfortunatamente non si può operare allo stesso modo che con gli script in DOS ma è necessario specificare il path dell'interprete, che nel nostro caso è ovviamente powershell.
Una volta fatto questo e solo nei parametri andremo ad indicare il percorso completo dello script (meglio se tra virgolette per evitare problemi con gli eventuali spazi).

Fino a qui tutto chiaro ma sfortunatamente ancora non sufficiente...

Infatti dobbiamo spiegare a powershell che dovrà trattare quello che gli abbiamo dato in pasto nei parametri come un comando e non come un oggetto.

Per fare questo basta anteporre al percorso dello script un "&" ovviamente con l'accortezza di racchiudere tutto tra virgolette nel caso si inseriscano degli spazi.


Quindi per ricapitolare e rendere facile il copia incolla :-P

Nella riga del comando metteremo il path per l'eseguibile di powershell:

C:\Windows\system32\windowspowershell\v1.0\powershell.exe

Mentre nella riga dei parametri, con tutte le virgolette del caso, piazzeremo un "&" e poi il percorso completo dello script in powershell che intendiamo eseguire tramite lo schedulatore di windows:

"& "C:\test.ps1""

Solo per completezza vi ricordo di controllare anche i permessi con i quali fate eseguire lo script allo schedulatore e di impostare correttamente il fatto che possa essere eseguito anche quando l'utente non è loggato.


lunedì 22 febbraio 2016

SandBlast Check Point come farlo funzionare...


Avendo trovato non poche difficoltà a reperire informazioni e guide ben strutturate ho deciso di pubblicare un paio di paginette per chi si dovesse trovare nella mia stessa situazione e prima di gettarsi totalmente nello sconforto decidesse di tentare il tutto per tutto con una ultima disperata ricerca su internet...

La presente vuole essere una guida (non esaustiva) all'installazione e alla prima configurazione delle lame Threat Emulation e Threat Extraction di Check Point configurate su appliances dedicate.


INSTALLAZIONE APPLIANCE

L’installazione delle appliance TE non si differenzia da quella di un normale gateway Check Point.
Le appliances hanno già precaricato una versione di Gaia specifica per le appliance che fanno Threat Emulation.

ATTENZIONE! Non è una versione normale di Gaia ma è ad-hoc per la Threat Emulation.

(Non verranno qui riportati i passaggi relativi all’installazione di un gateway Check Point dandoli per scontati al lettore di questa tipologia di documento e comunque facilmente reperibili con una banale ricerca su Google)

NON esiste un cluster di TE appliances! 
Il Fail-over è manuale ossia nel caso in cui una delle due macchine dovesse avere problemi sarà necessaria una nuova installazione delle policy definendo la macchina superstite come destinazione dei processi di emulazione.
Diverso il discorso per quanto riguarda il bilanciamento del carico relativo ai processi di emulazione. Questa operatività e definita da una configurazione specifica della TE che verrà spiegata più avanti nel documento.


Le operazioni che andremo a compiere per l’installazione delle appliance Sandblast saranno: 
  1. Installazione, aggancio alla management, aggiornamento e installazione delle licenze sulle appliances; 
  2. Abilitazione della feature sui gateway interessati. 
  3. Creazione di una policy per la threat emulation. 
  4. Configurazione della seconda appliance. 
  5. Configurazione del Multiple Sandblast Appliances. 
  6. La threat extraction. 


Installazione – aggancio alla management – aggiornamento e installazione delle licenze

Installazione

Una volta posizionate e cablate le macchine si procederà ad un’installazione standard del gateway dalla console e successivamente dalla WebUI al solito indirizzo https://192.168.1.1 raggiungibile collegandosi all'interfaccia di management.

Dovranno essere abilitate solo le feature di Gateway. 

Nessuna feature di cluster dovrà essere attivata.

L’ideale è attivare almeno due interfacce di cui una sarà quella di management e la seconda gestirà il traffico di emulazione da e verso il firewall (meglio di più e magari aggregate se si prevedono parecchi file da analizzare).

Aggancio alla management

L’operazione di aggancio alla management ricalca quella di un gateway standard senza alcuna differenza.

E’ necessario assicurarsi di aver installato sulla Management l’R77.30 Management Add-On per poter gestire tutte le feature delle blade Threat Emulation e Threat Extraction (vedi SK105412).

Il consiglio in questa fase è quello di evitare di attivare la feature di Threat Emulation ed Extraction ma di effettuare questa operazione in un secondo momento.

Quindi per prima cosa fare il “SIC “e definire la macchina solo come firewall per procedere “puliti” alle fasi successive.

Come per qualunque altro gateway sarà necessario sistemare la topologia, in modo che la macchina ruoti il traffico in maniera corretta, e l’anti-spoofing per non bloccare connessioni legittime.

Se l’appliance fosse superiore al modello TE100 sarà necessario anche abilitare l’hyper threading (non attivo di default). Vedi sk93000.

Aggiornamento e installazione delle licenze

A questo punto è possibile caricare le licenze sulla macchina, direttamente da Smart Update, e procedere all’aggiornamento degli ultimi hotfix attraverso il CPUSE via WebUI.


IMPORTANTE!!!

Attenzione alle e-mail... la scansione delle stesse senza configurare il gateway come MTA potrebbe dare come risultato numerosi errori nella ricezione delle mail o l'impossibilità totale di ricevere mail in modo corretto.


Per maggiori informazioni consultate la sezione dedicata nel documento di Check Point:




Abilitazione della feature sui gateway

Una volta completata in maniera corretta l’installazione delle appliances ed effettuato il collegamento con la SMS siamo pronti per l’attivazione delle funzionalità di Threat Emulation.

Il prodotto dovrà essere attivato sul nodo (o cluster) primario attraverso il quale il traffico da emulare passerà e sulla appliance che dovrà effettuare l’emulazione.

Inizialmente verrà attivata e configurata una sola delle appliance e solo in seguito si attiverà la feature per il bilanciamento del carico.

Nell'ordine si dovrà procedere:
  • attivando la Threat Emulation sull'appliance definendo il target di emulazione come locale 
  • poi sul nodo (o cluster) primario definendo come target l’appliance. 

Il workflow è definito nella guida di Check Point e riportato sotto:


Una volta spuntata la voce editando il nodo partirà un semplice wizard che chiederà semplicemente dove dovrà essere effettuata l’emulazione dei file.



Editando il gateway è poi possibile definire ulteriori opzioni ma che, salvo si voglia evitare di condividere anonimamente le risultanze delle minacce rinvenute con il Cloud di Check Point, possono essere lasciate ai valori di default.





L’unica differenza tra le configurazioni del gateway primario e l’appliance sarà quindi ovviamente l’Analysis Location che per l’appliance sarà settato il "This gateway" mentre per il gateway primario avrà definito il nome che l'appliance ha sulla management.


Creazione di una policy per la threat emulation

Attivate le appliance è ora necessario definire una policy per renderle effettivamente operative.

Dalla management ci si dovrà recare nel tab relativo alla blade Threat Prevention.

Prima cosa utile da fare sarebbe creare degli UserCheck personalizzati che verranno mostrati agli utenti nel caso in cui il firewall dovesse bloccare gli accessi ad una risorsa o chiedere all'utente l’azione da intraprendere. Tali UserCheck verranno poi sostituiti durante la definizione della policy ai check di default.

Il secondo passo è quello di creare un profilo partendo possibilmente dal Recommended_Profile e modificando le varie voci all'occorrenza.

Abilitare la Threat Emulation e definire il livello di protezione che si vuole garantire:



Definire i parametri relativi alla protezione e se applicata all’HTTP e al SMTP e i tipi di file supportati:


Specificare l’Analysis Location (la Threat Emulation Appliance) e le caratteristiche delle macchine sulle quali verrà effettuata l’emulazione:


Se la protezione è sul protocollo SMTP eventuali esclusioni di indirizzi mail e come comportarsi in caso nella mail venga rinvenuto contenuto non conforme.

Attenzione al parametro relativo al logging che può generare parecchie entry nel fw.log.


La stessa policy dovrà essere ASSOLUTAMENTE installata sia sul gateway principale che sulla appliance della Threat Emulation pena il non funzionamento dell’emulazione.

Un punto di particolare rilievo e di cui tenere conto (soprattutto in fase di installazione) è che solo dopo aver applicato una policy alla Threat Emulation Appliance questa comincerà il download delle immagini dei client per l’emulazione (l'appliance di default arriva senza immagini a bordo).

L’operazione di download e inizializzazione dei virtual client è terribilmente lunga e durante il processo verranno restituiti una marea di log che indicano l’impossibilità di procedere all’emulazione dei file. 

Una valutazione “spannometrica” senza tenere conto della velocità della rete (ogni immagine “pesa” circa 4GB) è di un paio di ore per l’inizializzazione di una singola macchina.

Per verificare lo stato del download delle immagini è possibile collegarsi in ssh all’appliance e (comando riconosciuto sia da clish che da expert) dare il comando:

# tecli show download images

Per la verifica dello stato delle emulazioni invece si può usare:

# tecli show statistics


Configurazione della seconda appliance

A questo punto, ossia una volta che la prima delle due appliance è stata correttamente e completamente configurata, è possibile procedere alla messa in opera della seconda macchina.

La procedura è ovviamente identica alla prima ossia, nell'ordine: 
  • Installazione della macchina 
  • Configurazione dell’appliance via console e poi via WebUI 
  • Aggancio alla management 
  • Installazione delle licenze e aggiornamento con le hotfix 

Configurazione del Multiple Sandblast Appliances


Check Point ha previsto una sorta di load balancing tra le appliance per la fase di emulazione.

Non esiste un reale metodo di fail-over se non quello manuale di riconfigurare le policy puntando alla seconda appliance ed effettuare un’install policy sui gateway.

La documentazione ufficiale è reperibile a questo link.

Per configurare le machine con la feature Multiple Sandblast appliance si dovranno seguire i passaggi sotto indicati: 

Connettersi in expert mode ai firewall del nodo primario -NON LE APPLIANCES - (l’operazione deve essere completata su entrambi i gateway nel caso di un cluster). 

  1. # tecli advanced remote activate 
  2. # tecli advanced remote show 
  3. Install policy (dopo l’install la feature si disattiverà nuovamente ma alla successiva attivazione nella lista dovrebbero apparire gli IP nell'elenco delle Suggested Appliances for Private Cloud) 
  4. # tecli advanced remote activate 
  5. # tecli advanced remote show 
  6. # tecli advanced remote add “IP_ADDRESS” (uno degli IP presenti nella lista delle Suggested Appliances for Private Cloud) 
  7. Install policy 
  8. (nel caso di un cluster ripetere sull'altro nodo) 
Qui arriva una delle parti più curiose del prodotto.
Per potersi rendere conto del fatto che l'emulazione stia realmente avvenendo su entrambe le appliance non dovremo usare il comando visto prima (tecli s s) ma potremo (da command line) vedere quanti file vengono processati per unità di tempo (minuto, ora, giorno o mese) con:

# tecli show througput (minute - hour - day - month)

Oppure ci potremmo avvalere dello Smart Tracker nella vista dedicata alla Threat Emulation: 


che vede inserita di default una colonna con la dicitura "Analyzed On" che riporterà il nome del Gateway sul quale l'emulazione è stata processata.


La threat extraction

La modalità di funzionamento della blade Threat Extraction è illustrata nell'immagine tratta dalla documentazione Check Point.


La mail attraversa il gateway su cui è attiva la funzionalità e gli eventuali allegati vengono privati della parte “attiva”.

L’attivazione della blade avviene sul gateway primario sul quale è già presente e operativa la funzionalità di MTA (la feature non va attivata sulle appliance della Threat Emulation).

L’eventuale presenza di una Threat Emulation attiva permette di verificare che i file che vengono “disattivati” non siano realmente dei file compromessi da malware (comportamento definibile dalle impostazioni della blade).

Per rendere la blade funzionante è necessario innanzitutto procedere con l’attivazione sul gateway (o cluster) mettendo la spunta sulla rispettiva voce.


Se la funzionalità di Mail Transfer Agent non fosse già attiva sul gateway il wizard proporrebbe delle form dove inserire i dati per la configurazione del MTA.


Alla fine verrà richiesto di effettuare un’installazione delle policy e di configurare il flusso delle mail in modo che attraversino il gateway.


Le impostazioni da dare sul gateway sono scarse e prevedono esclusivamente la possibilità di forzare uno stato di detect a prescindere da quanto definito sulla policy e la gestione dello spazio che i log dovranno occupare.


Maggiore dettaglio invece è possibile direttamente nelle policy definibili dal tab Threat Prevention.

Dovrà essere creata una nuova policy, o editata una esistente, mettendo la spunta nella casella relativa alla Threat Extraction nella sezione General Properties.


Apparirà una nuova sezione relativa alla Threat Extraction dalla quale sarà possibile definire il comportamento della lama.



Uno dei settaggi ai quali prestare maggiore attenzione è quello della sezione "Extraction Method" che definisce il comportamento nel caso in cui vengano rilevati componenti attivi nell'allegato della mail.

Si può decidere che l’allegato venga convertito in un PDF oppure che tutto il contenuto potenzialmente malevolo venga estratto.

Nella successiva sezione si dichiarano quali mail devono essere processate e quali no.


Nell'ultima sezione invece si definiscono il logging e le eccezioni relative a tipologie particolari di file.



Alla fine sarà necessario il classico l’install della policy che dovrà essere effettuato sul gateway sul quale la Threat Extraction e l’MTA è attivo e che dovrà essere dichiarato nell'elenco degli "Install on" gateway nella apposita colonna della policy.


Spero che queste indicazioni possano tornare utili a qualcuno...


mercoledì 3 settembre 2014

Site Recovery Manager automatic test, notification and cleanup

Per lavoro ho da poco avuto l'occasione di collaborare con uno dei numerosi partner di VMware e con delle persone di VMware stessa per la progettazione e la successiva realizzazione di un'installazione del prodotto per la gestione dei piani di continuità operativi, il Site Recovery Manager | SRM.

La filosofia alla base del prodotto ha un fascino innegabile per chi mastica di informatica... immaginate la possibilità di trasferire un'intera infrastruttura virtuale in un altro luogo con pochi click... mistico!

In effetti... dopo aver predisposto tutta la struttura fisica per accogliere i server da proteggere, dopo aver disegnato un'infrastruttura di rete parallela e averla configurata sul sito di destinazione e dopo aver configurato tutte le repliche a livello di storage per avere i dati "attivi" anche sulla SAN presente nel sito di Recovery... sono solo pochi click per effettuare un test o il vero e proprio "spostamento della produzione".

Tutto meraviglioso ma... VMware (da un certo punto di vista correttamente) non ha previsto in nessuna delle versioni fino ad ora rilasciate dell'SRM un automatismo per effettuare dei test e per inviare dei report relativi al risultato degli stessi... 
Ci tengo a precisare che la modalità di test è ovviamente prevista e funziona in maniera egregia permettendo di evidenziare delle eventuali mancanze o problematiche senza dover interrompere le repliche dei dati ma operando su delle snapshot che alla fine del test verranno rimosse ed eliminate lasciando l'ambiente pronto per qualunque evenienza.

Si sa però che un buon piano di Disaster Recovery funziona solo se testato abbondantemente in modo da evitare sgradevoli sorprese al momento in cui realmente dovesse essere necessario spostare il sito produttivo, ma si sa anche che il tempo è realmente difficile da trovare per effettuare dei test...

E allora ecco che dalla nuova versione di PowerCLI (5.5 R2) esce la soluzione al mio (e forse non soltanto mio) problema...
Sui blog di VMware trovo una serie di post che descrivono proprio quello che fa al caso mio:


Il buon Ken esplora con una discreta dovizia di particolari tutti i metodi che possono essere utilizzati via PowerCLI in abbinata all'SRM. Dapprima descrive le modalità di collegamento al Server che ospita l'applicativo e poi snocciola i vari comandi per listare i recovery plan e lanciare il test o il cleanup o il recovery vero e proprio. Infine descrive come ottenere uno stringato resoconto delle ultime operazioni compiute su uno specifico Recovery Plan (un mini-report lo definirei io).

Visto quello che si poteva fare non mi restava che mettere insieme il tutto in una serie di script per farli lanciare poi dallo schedulatore di Windows una volta a settimana :-)

Per una questione di semplicità di scrittura degli script e per meglio gestire le schedulazioni ne ho creati tre diversi: uno per far partire il test del Recovery Plan, uno che notifica l'ultimo risultato dello stesso Recovery Plan e un ultimo che si premura di fare il Cleanup per rimettere l'ambiente in "ordine" per il test della settimana successiva.

Il primo script quindi si occupa di far partire il test del Recovery Plan che ci interessa.

#Add PowerCLI Snapin
Add-Pssnapin VMware.VimAutomation.Core

#Connect to vCenter
connect-viserver "vCenter.local" -User 'Administrator' -Password 'xxxxxxxxxx'

#Set variables (and connect to SrmServer)
$SrmConnection=Connect-SrmServer -User 'Administrator' -Password 'xxxxxxxxxx'
$SrmApi = $SrmConnection.ExtensionData
$ProtectionGroups = $SrmApi.Protection.ListProtectionGroups()
$RPmode = [VMware.VimAutomation.Srm.Views.SrmRecoveryPlanRecoveryMode]::Test

#Define Recovery Plan to test ( to find the correct one use the $srmapi.recovery.listplans()[<number>].getInfo() command)
$RPmoref = $SrmApi.Recovery.ListPlans()[0]

#Start the test with last storage replication
$RPmoref.Start($RPmode)

Per trovare il corretto Recovery Plan (identificato da un numero nel comando) sfruttiamo - dopo aver dichiarato le variabili presenti nello script nella specifica sezione - il comandino:

$srmapi.recovery.listplans()[X].getInfo()

Provando a lanciare il comando più volte variando la "X" con un numero da 0 a "il numero dei recovery plan che avete definito -1" :-) vi verrà restituita una riga con una dicitura che riporterà il nome con cui avete battezzato il Recovery Plan permettendovi di individuarlo.

Scoperto il "magic number" (per comodità nei miei script di esempio uso lo 0 ) lo utilizzeremo anche negli altri script partendo da quello che invia una mail con il risultato dell'ultimo test effettuato sullo specifico Recovery Plan:

#Add PowerCLI Snapin
Add-Pssnapin VMware.VimAutomation.Core

#Remove last result file
rm "c:\scripts\last_result.txt"

#Connect to vCenter
connect-viserver "vCenter.local" -User 'Administrator' -Password 'xxxxxxxxxx'

#Set variables
$SrmConnection=Connect-SrmServer -User 'Administrator' -Password 'xxxxxxxxxx'
$SrmApi = $SrmConnection.ExtensionData
$PlanMoref = $SrmApi.Recovery.Listplans()[0].moref
$HistoryMoref = $SrmApi.Recovery.GetHistory($PlanMoref)

#Send last result output to file
$HistoryMoRef.GetRecoveryResult(0) | Select Name, RunMode, Description, StartTime, StopTime, ResultState, WarningCount | Format-List | out-file "c:\scripts\last_result.txt"

#Send e-mail
$smtpServer = "mail.local"
$smtpFrom = "srm_from_DR@local"
$smtpTo = "it_admin@local"
$messageSubject = "Last Recovery Test Result"
$body = (get-content "c:\scripts\last_result.txt" | out-string)

send-mailmessage -from "$smtpFrom" -to "$smtpTo" -subject "$messageSubject" -body "$body" -smtpServer "$smtpServer"

Per far partire questo script l'ho inserito come comando lanciato dallo stesso Recovery Plan alla fine di tutte le operazioni.
Ricordatevi che per far partire uno script in Poweshell/PowerCLI è necessario usare la seguente sintassi (dopo aver selezionato "Command on SRM Server"):

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -file c:\script\report_script.ps1


Verificato (dalla mail ricevuta) che il test si sia concluso senza errori non resta che dare una ripulita all'infrastruttura prima del prossimo test...
Nulla di più semplice, sempre bene in mente il "magic number" che identifica il nostro Recovery Plan in test e:

#Add PowerCLI Snapin
Add-Pssnapin VMware.VimAutomation.Core

#Connect to vCenter
connect-viserver "vCenter.local" -User 'Administrator' -Password 'xxxxxxxxxx'

#Set variables
$SrmConnection=Connect-SrmServer -User 'Administrator' -Password 'xxxxxxxxxx'
$SrmApi = $SrmConnection.ExtensionData
$ProtectionGroups = $SrmApi.Protection.ListProtectionGroups()
$RPmode = [VMware.VimAutomation.Srm.Views.SrmRecoveryPlanRecoveryMode]::CleanupTest

#Define Recovery Plan to cleanup ( to find the correct one use the command: $srmapi.recovery.listplans()[<number>].getInfo() 
$RPmoref = $SrmApi.Recovery.ListPlans()[0]

#Start the cleanup
$RPmoref.Start($RPmode)


Anche in questo caso schedulato con lo Scheduler di Windows.
A qualcuno potrebbe sorgere il dubbio del perché schedulare il cleanup... è arrivata la mail e quindi so che devo collegarmi al vCenter, poi all'SRM andare sui Recovery Plans e lanciare il cleanup... se avete avuto questo dubbio avete perso la premessa fatta all'inizio... TROVARE IL TEMPO :-)

Scriptando anche il cleanup mi garantisco che il test della settimana successiva potrà partire correttamente anche se in quella precedente non ho trovato i 10 minuti per andare a cancellare il vecchio test...

Spero con questo post di aver semplificato la vita a qualche altro Amministratore di Sistemi alle prese con il Site Recovery Manager.

domenica 30 marzo 2014

VCP con la scadenza

Come recita un vecchio adagio... nulla è per sempre...

Come tante altre certificazioni professionali anche VMware ha deciso di apporre la "data di scandenza" alle sue VCP.
Con la modalità precedente infatti una persona che raggiungeva il "titolo" di VCPx (x inteso come qualunque certificazione di livello Professional) lo rimaneva per sempre.
Dal 10 marzo del 2014 invece, entro al massimo due anni, è necessario ridare validità alla propria certificazione attraverso una delle seguenti modalità:

- ricertificarsi allo stesso livello di VCP ma alla versione più recente (es. un VCP3 per poter essere ancora VMware Certified Professional dovrà superare l'esame della VCP5-DCV)

- conseguire una certificazione VCP in una diversa disciplina (es. un VCP-CLOUD rimane tale se supera dopo il 10 marzo 2014 anche l'esame VCP5-DT)

- certificarsi al livello superiore ossia da VCP passare a VCAP (es. un certificato VCP5-DCV consegue la certificazione VCAP5-DCA)

Nella pratica chiunque abbia conseguito una certificazione professionale prima del 10 marzo 2013 dovrà ottenere la nuova certificazione entro il 10 marzo del 2015 pena il decadimento della precedente.
Ovviamente per non inimicarsi il vasto pubblico di VCPs VMware ha deciso che non vi è alcun obbligo di seguire il costoso corso per la preparazione ma è sufficiente superare l'esame di abilitazione.

Contestualmente inoltre VMware ha deciso di porre fine alla possibilità di ottenere la certificazione VCP4 imponendo come deadline per sostenere l'esame il 31 maggio del 2014.

A ben vedere non erano molte le aziende che garantivano la validità a vita di una certificazione, e nelle intenzioni di VMware sembra esserci la volontà di garantire che i "suoi" VCPs siano sempre aggiornati all'ultima versione. Non a caso le release principali di vSphere si sono susseguite a distanza di circa 2 anni l'una dall'altra...

Qui trovate il post originale di VMware che fornisce tutti i dettagli del caso...

Certificati di tutte le VCP è ora di rimettersi a studiare!!!


domenica 9 febbraio 2014

Microsoft KMS Server e VMware View

Il deploy di client Windows 7 attraverso la tecnologia Linked Clone di VMware Horizon View porta una quantità sconsiderata di vantaggi per velocità ed efficacia di azione. Pochi click del mouse e, se tutto è configurato a dovere, ecco disponibili centinaia di client in qualche decina di minuti pronti per essere utilizzati da chiunque possieda un valido entitlement al pool.

Il fatto che le configurazioni siano fatte a dovere potrebbe sembrare una cosa ovvia ma, in infrastrutture di una certa complessità, come quella necessaria al funzionamento di Horizon View, il rischio che qualcosa non sia totalmente "in bolla" non è per nulla remoto.

Risulta particolarmente ovvio che i client debbano essere dotati di una regolare licenza per il sistema operativo virtualizzato anche se questo, in linea teorica, potrebbe durare il tempo di una sessione di lavoro (decido che alla disconnessione dell'utente il client virtuale debba essere cancellato immediatamente). Un pò meno ovvio il meccanismo necessario per rilasciare le licenze a macchine fatte con la "fotocopiatrice" da una unica macchina sorgente (golden o parent image).
Si badi bene che il "licenziamento" dei client virtuali è fondamentale per completarne la creazione. Durante un'operazione di provisioning infatti nella fase di "customizing" l'agent installato sulla VM verifica anche lo stato di licenza restituendo un errore e bloccando il processo nel caso la verifica non andasse a buon fine.
Ad essere onesti potreste bypassare il problema evitando il controllo della licenza da parte del agent di view installato con una semplice modifica ad una chiave di registro della macchina parent:

http://dharmgolf.blogspot.it/2010/11/viwe-45-windows-7-licenses-activiation.html

La maniera corretta per far funzionare il tutto è però l'utilizzo di un server su cui è stato installato il software Microsoft Key Management Services (KMS): detto brutalmente un server KMS (i codici MAK Multiple Activation Key non sono supportati).

Tutto qui? In effetti è tutto qui ma...

Se non volete aprire la consolle del View e ritrovarvi centinaia o più probabilmente migliaia di errori relativi all'ultimo recompose lanciato tipo:

View Composer Agent initialization error (16): Failed to activate software license. (1026556)

...beh è meglio se vi assicurate di aver fatto tutto quanto descritto nei punti sotto riportati.

Dando per scontato che l'infrastruttura Horizon View e il server KMS siano correttamente installati e funzionanti partiamo con i controlli:

1 - verificate che su tutti i domini interessati dal rilascio delle licenze sia presente il record che indirizza le macchine verso il server KMS

                  Configuring DNS

2 - se stiamo parlando di client virtuali con installato Windows 7 fate in modo che vengano attivate, prima di cominciare con i vari provisioning delle macchine nei pool, almeno 25 copie di Windows 7 (magari proprio le vostre macchine parent...) questo "sbloccherà" il KMS server.

3 - collegatevi al vostro server KMS e verificate a che punto siete con le licenze rilasciate con il comando SLMGR.vbs /dlv. Osservate il valore riportato alla riga Current Count. Se è maggiore o uguale a 25 siete pronti per lanciare provisioning di macchine virtuali senza timore alcuno.

Visto che stiamo parlando di virtuale potete utilizzare un trucco senza creare realmente 25 VM diverse (con diverso CMID Client Machin ID) createne una e fate una snapshot lanciate un sysprep /generalize e seguite la procedura guidata. Alla fine della stessa e riavvii vari ... il counter di cui parlavo sopra dovrebbe essersi incrementato di una unità... revert to snapshot e avanti di nuovo fino a 25 e oltre :-)


Nulla può andare storto :-D