VM template – customization specification

Len nedávno sa mi podarilo dotiahnuť automatizované vytvorenie VM do stavu, pri ktorom na konci procesu vytvorenia už musím iba pridať požadované práva.

Koľký z vás ste túžili niečo sem zapísať ale nevedeli ste čo alebo ako?

No ale pekne po poriadku.

Po skončení samotného vytvorenia VM, som musel urobiť tieto poinštalačné kroky:

  1. Nainštallovať Antivirusový SW
  2. Doplniť 3. DNS server do konfigurácie siete
  3. Zmeniť písmeno DVD-ROM na R:
  4. Presunúť tento server z default AD OU do prislúchajúcej AD OU
  5. Pridať tento server do príslušnej AD skupiny
  6. Vypnúť firewall

Tieto kroky niesú príliš náročné, no popri bežnej práci sa vám nechce robiť niečo, čo viete že sa dá zautomatizovať.

Takže som sa pustil do toho. Čo vlastne môžem podhodiť do “Run Once” ? Nie, powershell script nie, ale .bat s príkazom na spustenie powershell scriptu áno. ;)

Obsah .bat súboru môže vyzerať napr. takto:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command Set-ExecutionPolicy -ExecutionPolicy ByPass
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe C:\Windows\vmwaretmpl\runonce.ps1

Na to, aby sme mohli začať písať runonce.ps1, je potrebné urobiť 2 kroky aby  presun AD objectu prebehol v poriadku.

  1. Zýskať AD účet, ktorý bude mať práva
    • pridávať novovzniknuté VM do AD
    • presúvať tieto objecty do príslušných AD OU
    • pridávať tieto objecty do príslušných AD Group
  2. Doinštallovať Powershellové cmdlety pre managovanie AD
  3. Nainštallovať Antivírusový SW

S 1. bodom vám pomôže váš AD administrátor. S 2. si pomôžete veľmi jednoducho sami:

Pre MS Windows Server 2008:

Import-Module ServerManager

Add-WindowsFeature RSAT-AD-Powershell

Pre MS Windows Server 2012:

Add-WindowsFeature RSAT-AD-Powershell

Ked tieto body máme splnené, môžeme začať.

$username = "domain\ADJoiner"
$password = Get-Content "C:\Windows\vmwaretmpl\pass.txtdomain\ADJoiner" | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username,$password)

Bohužiaľ (Chvála Bohu?), cryptované heslo nieje možné použiť na inom Windows, na akom bolo vyrobené. A kedže VMware pri deploy VM robí sysprep, takéto heslo nemôžeme použiť. Nemusíme ale heslo písať do scriptu, môžeme ho prečítať zo súboru. (Na konci scriptu ten súbor zmažeme)

Samotný script potom vyzerá takto:

$username = "domain\ADJoiner"
$password = Get-Content "C:\Windows\vmwaretmpl\pass.txt" | ConvertTo-SecureString -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username,$password)

$ADComputer = Get-ADComputer $env:COMPUTERNAME -Credential $credential
$ADComputer | Move-ADObject -TargetPath 'OU=V,OU=Servers,DC=DOMAIN,DC=COM' -Credential $credential

Add-ADGroupMember -Identity "SUS NO RESTART" -Members $ADComputer -Credential $credential

Set-DnsClientServerAddress -InterfaceAlias "Ethernet0" -ServerAddresses ("192.168.1.3","192.168.1.4","192.168.1.5")

$DVDDrive = Get-WmiObject -Class Win32_Volume -Filter "DriveType=5"
$DVDDrive | Set-WmiInstance -Arguments @{DriveLetter="R:"}

Set-NetFirewallProfile -Name Domain,Public,Private -Enabled False

& .\AVClientSysprep.exe

Remove-Item C:\Windows\vmwaretmpl\pass.txt -Force

Ak aj váš Antivírusový client, potrebuje po vyklonovaní urobiť svoj vlastný sysrep, pridajte ho do scriptu:

& .\AVClientSysprep.exe

a nakoniec zmazanie pass.txt:

Remove-Item C:\Windows\vmwaretmpl\pass.txt -Force

Author: Martin

Infrastructure engineer | virtualization & cloud enthusiast | vSphere specialist | blogger | Veeam Vanguard 2021,2022,2023 | VMware vExpert 2017 - 2023 | VMCE | Slovak VMUG Leader |  user group ambassador for kmug.sk | husband&father