In Exchange Server 2013 per poter creare un Database Availability Group è necessario “preparare” prima il Computer Account che verrà utilizzato dal DAG stesso. Questa operazione prende il nome di Prestaging e può avvenire o tramite interfaccia grafica (Active Directory User and Computers), sia tramite CmdLet PowerShell e script.
The Graphical Way
- Su un Domain Controller lanciamo ADUC (dsa.msc)
- Rendiamo visibili le Advanced Features (dal menù View spuntiamo la voce corrispondente)
- Ci posizioniamo nella stessa OU dove sono i server Exchange quindi scegliamo: New Object -> Computer e gli assegniamo il nome che daremo al DAG (ad esempio… DAG01)Appena creato provvediamo a disabilitarlo (tasto destro -> Disable)
- Procediamo andando a impostare i permessi
- Tasto destro -> Property scegliamo il tab Security (se non lo troviamo è perché ci siano dimenticati di abilitare le Advanced Features). Scegliamo Add e andiamo ad aggiungere Exchange Trusted Subsistem con i permessi di Full Control. Sempre in Security ripetiamo l’operazione andando ad aggiungere il Computer Account del primo server Exchange che inseriremo ne DAG, sempre con il Full Control
The Shell Way
Nonostante l’indubbia comodità dell’interfaccia grafica, quando è possibile lavoro a “riga di comando” (shell o script che siano). Preferisco questo approccio fondamentalmente per due motivi: limita la possibilità di errori e variazioni ed è più “ripetibile”: uno script o un comando una volta testato e verificato… non cambia. Basta parametrizzarlo o semplicemente modificarlo ogni volta che ci serve ed il gioco è fatto!
Se seguiamo l’approccio della via grafica, possiamo spezzare il problema in due parti: la creazione del Computer Account e l’assegnazione dei permessi.
Dopo aver caricato in PowerShell (avviata sempre con il Run As Administrator) il modulo di AD (import-module activedirectory), lanciamo il comando New-ADComputer con gli attributi necessari, ad esempio: New-ADComputer -name DAG01 -SamAccountName DAG01 -Path “CN=Computers,DC=PMINCLOUD,DC=COM” -Enabled $false -Description “Account per DAG01”
Ok adesso andiamo a assegnargli i permessi al gruppo con lo script seguente:
$PC = Get-ADComputer DAG01 $SID = (Get-ADGroup "Exchange Trusted Subsystem").sid $Rights = [System.DirectoryServices.ActiveDirectoryRights]::GenericAll $Permission = [System.Security.AccessControl.AccessControlType]::Allow cd AD: $ACL = get-acl $PC $ACE = new-object System.DirectoryServices.ActiveDirectoryAccessRule $SID, $Rights, $Permission $ACL.AddAccessRule($ACE) set-acl -path $PC -AclObject $ACL C:
Lo salviamo in un file .PS1 (facendo attenzione alle magie del copiaincolla) e lo lanciamo nella nostra sessione PS. Facciamo uno script (praticamente uguale) per assegnare al primo server Exchange:
$PC = Get-ADComputer DAG01 $SID = (Get-ADComputer "EX01").sid $Rights = [System.DirectoryServices.ActiveDirectoryRights]::GenericAll $Permission = [System.Security.AccessControl.AccessControlType]::Allow cd AD: $ACL = get-acl $PC $ACE = new-object System.DirectoryServices.ActiveDirectoryAccessRule $SID, $Rights, $Permission $ACL.AddAccessRule($ACE) set-acl -path $PC -AclObject $ACL C:
Lo lanciamo et voilà, le jeux sont fait!
Ovviamente… nessuno ci vieta di fare il merge dei due (o dei tre) script 😉