虛擬化域控制器系列(4)–以Clone的方式複製出Windows Server 2012域控制器

虛擬化域控制器系列(4)–以Clone的方式複製出Windows Server 2012域控制器

由於Windows Server 2012的域控制器懂得檢查VM GenerationID來看看虛擬機器是不是一直運作中那一台

所以如果我們把運作中的DC匯出匯入, 它會知道自己是另一個分身,

而通過某些程序, 這個分身會自動把自己的電腦名稱改變, 以另一個身份重新加入網域而且提升為域控制器.

通過這一個自動化的程序, 我們可以快速地產生出符合投產需求量的DC.

 

要達到這一個目的,

要被複雜的DC要是Windows Server 2012, 而且是處於符合標準的Hypervisor上.

而且擁有PDC身份的DC必須要在上線的狀態.

再來我們要找一個Windows Server 2012新增的一個群組叫”Cloneable Doamin Controllers”

image

把要被複製的DC電腦帳號加進去

image

這樣就行了嗎? 我們不禁會想, 複製出來的DC要如何知道它要使用那一個IP地址? 因為DC都不會用DHCP動態地址噢

這些資訊我們都要事先告訴給分身知道, 而提供資料的方式是透過一個叫DCCloneConfig.xml 的XML檔案

要產生這個檔案我們可以用New-ADDCCloneConfigFile Cmdlet

例如以下的例子 (更多例子可以用get-help New-ADDCCloneConfigFile –examples

New-ADDCCloneConfigFile -IPv4Address 172.29.0.30 -IPv4DefaultGateway 172.29.0.8 -IPv4SubnetMask255.255.0.0 -IPv4DNSResolver 172.29.0.10,172.29.0.20 -Static –SiteName Default-First-Site-Name

執行後的效果如下, 我們會見到幾個測試呈現綠色合格狀態

首先cmdlet會檢查這台電腦有沒有被加到Cloneable Domain Controllers群組, 進而檢查有沒有在其上安裝微軟覺得複製後會出問題的元件

如果沒有問題, 它會產生出DCCloneConfig.xml到C:\Windows\NTDS 裡

image

上面的情況是DC處於很整潔的狀況, 那如果電腦上有東西不能被複製呢?

例如我在DC02安裝了DHCP Server角色的話

image

同一個指令會被告訴有問題, 要求我們跑一個叫Get-ADDCCloningExcludedApplicationList的Cmdlet來解決問題

image

這時我們可以打Get-ADDCCloningExcludedApplicationList –GenerateXml

它會把微軟覺得不能被複製的東西資料匯出到C:\Windows\NTDS\CustomDCCloneAllowList.xml

image

我們見到CustomDCCloneAllowList.xml裡說DHCPServer是不能被複製的,

這時候我們有兩個選擇, 其一是把DHCP Server角色移除, 其二是不理會微軟的勸告

只要CustomDCCloneAllowList.xml存在, 我們再執行New-ADDCCloneConfigFile 時就會先檢查XML中的東西

這個檔案就是我們要New-ADDCCloneConfigFile 忽略檢查的部份

image

我們會見到產生出來的報告說明它使用了CustomDCCloneAllowList.xml

image

查看DCCloneConfig.xml, 裡面其實就包含我們在cmdlet裡鍵入的資訊,

以後如果我們要複製DC03, DC04, DC05等等, 只要修改這個檔案即可, 大可不用再跑cmdlet

image

這個檔案要存放到C:\Windows\NTDS, 其實更正確點來說是放到跟ntds.dit同一個地方

另一個更好佈署的方式是把它放入一個移動儲存裝置的根目錄上, 例如虛移的Floppy Driver

image

現在我把DC02關機, 可以用GUI對它做匯出的動作,

image

也可以打Powershell, 例如

Export-VM –Name VMName –Path D:\Exported

image

再來我們可以以GUI匯入這個VM, 緊記如果這樣做的話, 啟動VM時要選取複製VM的選項!

image

當然也可以用Powershell來佈署

Import-VM –Path VM-XML-Path –Copy –GenerateNewId –VHDDestinationPath New-VHD-Path

這個方式會產生出跟DC02一樣的機器名字, 如果要解決這個問題, 需要事先以一個Variable儲起執行結果, 例如

$VMresult = Import-VM –Path VM-XML-Path –Copy –GenerateNewId –VHDDestinationPath New-VHD-Path

進而改變名稱 Rename-VM $VMresult DC03

image

現在我們可以把DC03啟動了

image

啟動過程中會見到這台DC正準備一些複製分身的步驟

image

過沒多久, 看看PDC, 就會見到一台叫DC02-CLxxxx的機器

image

這台域控制器已經可以投產了, 如果不喜歡電腦名稱, 大可以更改它

而如果不更改, 繼續複製下去的話, 就會產生出DC02-CL0002, DC02-CL0003這樣的名稱, 直到產生了9999台DC就到盡頭了

以這種方式, 我們只要產生很多個DCCloneConfig.xml, 就能快速佈署我們的DC陣列以應付使用者需求了!

image