桌上型電腦的部署

使用 BDD 2007 進行簡單、可調整的部署

Adam Shepherd

 

摘要:

  • BDD 2007 的核心功能
  • 與 SQL Server 整合
  • 建置可調整的部署方案

大多數參與部署 Windows 的人都有聽過 Microsoft Solution Accelerator for Business Desktop Deployment,亦稱為 BDD,它是一套最佳作法指引和

工具,用來幫助您將 Windows® 部署至用戶端桌上型電腦。Windows Vista® 以 BDD 2007 的形式更新了 Solution Accelerator。這個版本包含了全新的 Microsoft® Management Console (MMC) 和工作編序器 (Task Sequencer),工作編序器是源自 System Center Configuration Manager 2007,亦即 Systems Management Server (SMS) 2003 的後繼版本。

BDD 2007 還有一項較不為人知的功能可作為完整的部署方案。在舊版的 BDD 中,它可以幫助您透過容易管理且可重複的方式建立和維護桌上型電腦映像。BDD 2007 現在提供額外的功能,可將 BDD 與 Windows 部署服務 (WDS)、SQL Server TM,以及 Windows Server® 2003 分散式檔案系統複寫 (DFS-R) 相結合,建置出可調整的部署方案。

可是等一下,進行 Windows 用戶端部署不是建議使用 SMS 2003 搭配作業系統部署 (OSD) Feature Pack 嗎?

沒錯,如果您已經有 SMS 2003 基礎結構,應該朝著使用 BDD 2007、SMS 2003 和 OSD Feature Pack 方向來進行部署。這是目前達成自動部署最周全的方法,而且它確實能夠拉低在組織內設定、安裝和管理 Windows 的成本。

然而,許多客戶並沒有 SMS 2003 或是同等的軟體部署方案。對於這些客戶,在本文中我會探討另一種選項。

BDD 2007 核心概念

BDD 2007 提供兩種主要的部署方法。第一種方法是精簡式安裝 (Lite Touch Installation),只使用 BDD 2007 來部署用戶端。這會在建置階段當場呈現一組精靈來擷取部署相關的資訊,例如應該為用戶端指定什麼電腦名稱 (見 [圖 1]),應該使用什麼鍵盤配置和時區等等。這種方法之所以稱為「精簡」是因為在建置階段開始之前收集這類資訊所需的手動輸入時間通常很短。

[圖 1] BDD 2007 精簡式安裝精靈

[圖 1]** BDD 2007 精簡式安裝精靈 **(按影像可放大)

第二種方法是自動安裝 (Zero Touch Installation),這是透過與 BDD 2007 整合,以 SMS 2003 的功能搭配 OSD Feature Pack 為基礎建置而成。這種組態可提供完全自動化、可調整、容易管理且免動手的部署方案。

BDD 2007 在建置階段 (用戶端 OS 部署的前幾個步驟之一) 會從各種不同的來源收集資訊。這些來源包括 WMI 呼叫和 BDD 2007 組態檔 — Bootstrap.ini 和 CustomSettings.ini。資訊是收集和儲存成變數,以用於整個部署程序。在精簡式安裝的案例中,Bootstrap.ini 和 CustomSettings.ini 檔案可讓您預先定義所有資訊,如果不定義,就必須手動輸入將這些資訊收集至部署精靈。

能夠預先指定所有資訊,使得精簡式安裝精靈不用在建置階段擷取這些資訊,可讓您將整個精簡式安裝程序自動化,並在那些 SMS 2003 不支援的環境內也能採自動安裝方案。您可以選擇預先定義的資訊範例包括 ComputerName=RDG0001VST,用於指定 RDG0001VDT 的電腦名稱,或是 TimeZoneName=GMT Standard Time 用以確保電腦時區是設定為格林威治標準時間。使用 BDD 進行部署期間所有可用的屬性都詳細記載在一份組態參考資料中,網址是 technet.microsoft.com/library/bb490302.aspx

如需有關設定和使用 BDD 2007 的詳細資訊,請參閱 2007 年 9 月號《TechNet Magazine》的<使用 BDD 2007 部署 Windows Vista>一文 (technetmagazine.com/issues/2007/09/BDD)。

BDD 與 SQL Server

為什麼 BDD 2007 要搭配資料庫?答案取決於您在部署期間如何動態地提供詳細資料,如果不提供這些詳細資料,就得透過精簡式安裝精靈手動輸入。我之前有提到,這可以使用 CustomSettings.ini 檔案來達成。問題在於,實際的部署中,這些詳細資料會隨著要部署的機器而改變。另外,如果您嘗試為 500 台不同的機器定義特定的選項和設定,CustomSettings.ini 檔案很快也會變得難以管理。透過連接一個後端資料庫到 BDD 主控台,您等於多了一個更方便管理的方案,不僅動態而且還可以擴充。

讓我們稍微談一下 SQL Server 如何與 BDD 2007 整合。首先,您必須確定部署伺服器上有安裝 SQL Server (最好是 SQL Server 2005 或之後的版本)。謝天謝地,在 BDD 2007 中建立資料庫的步驟很簡單:只要在 BDD 2007 Deployment Workbench 中的 [Database (資料庫)] 節點按一下右鍵,再按 [New (新增)],然後遵循指示就行了 (見 [圖 2])。BDD 小組提供了完善的精靈,讓您能夠快速又輕鬆地動手操作。

[圖 2] BDD 2007 的部署資料庫組態

[圖 2]** BDD 2007 的部署資料庫組態 **(按影像可放大)

資料庫一建成,就可以開始探索它的功能。資料庫內的項目主要分成四大類:電腦、角色、位置,以及廠牌和機型。每個類別都可讓您定義項目,而且針對每個定義的項目,您可填入 BDD 2007 變數,指派應用程式,以及提供其他索引鍵設定 (見 [圖 3])。

[圖 3] 指派部署屬性

[圖 3]** 指派部署屬性 **(按影像可放大)

將這四種類別當做兩個不同的群組來看待蠻有幫助的。電腦、位置,以及廠牌和機型類別提供您不同的方法在建置階段識別電腦。每部已識別的電腦接著可與資料庫中的特定角色建立關聯,以針對特定目的加以佈建,例如用於銷售、行銷或財務目的等,而每個角色會確保相關的企業營運應用程式皆已安裝。

使用 [電腦] 區段依照 MAC 位址、資產標籤、通用唯一識別元 (UUID),或序號來識別機器。因為這個區段中有可能會建立大量的項目,組織內的每部電腦各有一個項目,所以請在每個項目中只加入非常特定的屬性,例如 ComputerName。

使用 [位置] 區段針對組織周圍的特定地理位置來建立項目。每個項目可由該位置的預設閘道來識別。如果您在 Active Directory® 中有以位置為主的組織單位 (OU),而且您希望將某位置建置的電腦加入與該位置相對應的 OU 中的網域,這就特別好用。

使用 [廠牌和機型] 區段為您的部署必須支援之各種硬體類型建立項目。BDD 2007 會將這些項目與透過 WMI 呼叫探索得到的資訊相比對。在開發環境中 [廠牌和機型] 區段一種常見的用途是,建立項目分別檢查「Microsoft Corporation」和「Virtual Machine」的 [廠牌和機型] 屬性來查看某機器是 Virtual PC 2007 或是 Virtual Server 2005 虛擬機器。您若是在建置階段找到這些屬性的符合項,便可以告訴 BDD 它需要在部署階段安裝 Virtual Machine Additions 應用程式,方法很簡單,只要將應用程式加入 [廠牌和機型] 項目就行了。

提供方法識別機器之後,便可使用 [角色] 區段為每個您想要佈建的部署角色建立項目。這類的範例包括透過將與 BDD 中定義的 Windows XP 或 Windows Vista 組建相對應的 BuildID 屬性加入每個項目,來設定 Windows XP 角色和 Windows Vista 角色的項目。另外一種方法是指定部門角色,例如會計、業務或財務。我通常是在這個區段填入大多數的 BDD 屬性 (時區、地區設定、組織資訊等)。這樣一來可盡可能減輕資料庫的管理工作,因為項目並沒有繫結到任何特定的機器、硬體或位置。

我們需要告知 BDD 2007 它應該在部署階段搜尋資料庫,尋找與它目前正在建置的電腦相符的任一項目。若要設定 BDD 讓它在部署期間使用資料庫,可在部署點上按一下滑鼠右鍵,然後按一下 [Configure DB (設定 DB))。這個動作會帶您完成一連串的精靈,它會以項目來填入 CustomSettings.ini 檔案,使精簡式安裝程序查詢資料庫以取得資訊。

讓您的部署可彈性調整

您現在已有一部部署伺服器可以自動化精簡式安裝,並動態地佈建每台機器,讓它們在特定的商務角色內運作。但要如何調整這套方案呢?

方案的架構是以中樞與支點 (hub-and-spoke) 拓樸為基礎,如 [圖 4] 所示。您設定的第一部部署伺服器將是中樞兼父系部署伺服器。而每個子系部署伺服器則將作為支點。

[圖 4] 中樞與支點部署架構

[圖 4]** 中樞與支點部署架構 **(按影像可放大)

若要啟用此架構,您必須使用 DFS-R 將發佈共用複寫到每部部署伺服器。然後使用 SQL Server 快照集複寫將 BDD 部署資料庫的副本佈建到每部子系部署伺服器。這套方案的好處在於子系部署伺服器的需求很低 — 每台機器上只需要安裝 SQL Server Express、WDS 和 DFS-R 便可部署。

因為 BDD 2007 發佈共用中可能會存放大量資料,我規定使用 Windows Server 2003 R2 中的 DFS-R,而不使用舊版 Windows Server 中的檔案複寫服務。DFS-R 採用遠端差異壓縮 (Remote Differential Compression,RDC) ,只複寫在複寫群組成員之間的檔案差異 (delta) 變更。這在自訂映像檔中只做了微幅變更 (例如新增驅動程式) 時,會明顯影響複寫流量的多寡。使用 DFS-R,複寫流量只會等於所做變更的大小,而不是重新散佈整個映像檔。

Microsoft 網站上有豐富的 DFS 相關資訊,開始不妨先參考 microsoft.com/windowsserver2003/technologies/storage/dfs,我會在談到 BDD 部署的內容中解說基本安裝和設定步驟來提供整個程序的概觀。

請注意,如果您的伺服器執行的是以 Windows Server 2003 R2 以前的安裝版本為基礎的 Active Directory,可能需要更新 Active Direcotry 結構描述才能使用 DFS-R,因為複寫服務需要新的物件類別。如需有關在 Windows Server 2003 R2 中擴充 Active Directory 結構描述的完整細節,請參閱 go.microsoft.com/fwlink/?LinkId=99936

第一步是將 DFS 元件安裝到 Windwos Server 2003 R2 部署伺服器上。要這麼做的方法有很多,其中一個最簡單的方法是使用標準 [新增/移除 Windows 元件] 精靈。這一步完成後,您需要使用 DFS 管理主控台設定複寫群組,如 [圖 5] 所示。

[圖 5] DFS 管理主控台

[圖 5]** DFS 管理主控台 **(按影像可放大)

若要將 BDD 2007 部署方案向外延展,需要複寫兩個特定的資料夾。第一個是 BDD 2007 發佈共用,當中保存了所有的 BDD 原始檔和組態檔。您必須將這些檔案提供給每部部署伺服器使用。

第二個要複寫的資料夾是 WDS 用來保存 LiteTouch_x86.wim 檔案的 [Boot] 資料夾。這是 BDD 開機環境,由 WDS 提供給您的桌上型電腦用戶端機器以開始部署程序。您必須複寫這個檔案,以便當父系部署伺服器上的開機環境產生變更時,將變更複寫到部署基礎結構的其餘部分。

複寫的路徑是 X:\Distribution (當中 X 是在 BDD 2007 安裝階段指定的磁碟機代號) 和 Y:\RemoteInstall\boot (當中 Y 是保存 WDS RemoteInstall 共用之磁碟區的磁碟機代號)。

DFS-R 是多重主機複寫,因此不可能建立單向複寫拓樸。有鑑於此,為了集中管理發佈共用,請將每部子系部署伺服器上的發佈共用設定為唯讀。這將只允許 DFS-R 複寫寫入資料夾中 (因為它使用的是備份和還原權限)。從這些子系伺服器建置而成的子系機器完全不需要寫入此資料夾,因此只需要授與每個帳戶讀取權限。

最後一個使用 DFS-R 完成複寫資料的組態步驟是設定 WDS 中的開機設定資料 (BCD) 存放區的重新整理原則。這可確保對開機環境所做的任何變更會反映到每部子系部署伺服器上。所有 WDS 伺服器上都必須設定這個組態變更,而且我建議將此建置到佈建部署伺服器的組建和組態程序中。

在每部部署伺服器上,請執行下列命令:

WDSUTIL /set-server /BCDRefreshPolicy /Enabled:yes /RefreshPeriod:<time in minutes> 

重新整理的時段將視您在部署伺服器上重新整理資料有多頻繁而定。如果您將 DFS-R 設定成每個小時進行複寫,那麼理當將 BCD 存放區重新整理原則設定成每 60 分鐘進行重新整理。

SQL Server 複寫

到目前為止,您已將 BDD 2007 向外延展,從主要部署伺服器複寫 BDD 發佈共用和 WDS 開機映像到每部子系部署伺服器。您現在需要完成整個程序,然後複寫 BDD 2007 Deployment Workbench 資料庫,讓每部部署伺服器可從本機使用它。

產品說明文件形容 SQL Server 採用的複寫方法幾乎就跟發行雜誌一樣。就雜誌而言,會有出版商 (publisher) 製作雜誌,有配銷商 (distributor) 為出版商散發雜誌,還有訂閱者 (subscriber) 訂購和收取雜誌。SQL Server 的內建複寫功能也使用相同的英文術語。

不過要注意的是,要成為 SQL Server 資料庫的發行者,伺服器不能執行 SQL Server Express Edition,它必須使用完整版的 SQL Server。對於主要部署伺服器,我使用 SQL Server 2005 (不過 SQL Server 2000 也有支援)。而對於每部子系部署伺服器,您可以使用 SQL Server 2005 或 SQL Server 2005 Express。

開始設定 SQL Server 複寫之前,有幾個您應該先完成的步驟,以確保 SQL Server 的設定正確以便支援複寫。當佈建部署伺服器時,請確定安裝 SQL Server 2005 或 SQL Server 2005 Express Edition 期間已包含複寫元件。SQL Server Express 在預設的情況下並不會安裝複寫元件。

接下來,需要在 SQL Server 中啟用遠端連線,才能允許精簡式安裝從遠端開機環境連線到 SQL Server。若要設定 SQL Server 進行遠端連線,請啟動 SQL Server 介面區組態工具,選取 [服務和連接的介面區組態],然後設定伺服器來接受 TCP/IP 和具名管道的本機和遠端連線。

接下來,在主要部署伺服器上,建立一個共用資料夾來保存複寫快照集資料,供每部子系部署伺服器上的複寫代理程式讀取。我之後會將這稱為共用資料夾。我通常是把這個資料夾與其餘部署內容放在同一個磁碟區上。

如果子系部署伺服器上安裝的是 SQL Server Express Edition,將需要最後的設定步驟。SQL Server Browser 服務在預設的情況下是停用的。若要允許複寫,必須將此服務設定為自動或啟動。請使用 SQL Server 組態管理員工具來設定此服務。您還必須在要接受這些複寫內容的子系伺服器上先建立資料庫。請將資料庫名稱跟主要部署伺服器上的 BDD 2007 資料庫名稱保持一致,這樣一來就不需要進行額外的組態。

設定複寫

您現在可以開始設定 SQL Server 複寫。請從主要部署伺服器開始著手,它應該是執行完整版的 SQL Server 2005,啟動 SQL Server Management Studio。第一步是建立和設定散發。方法是,巡覽至管理主控台的 [複寫] 資料夾,如 [圖 6] 所示。在 [複寫] 資料夾上按一下滑鼠右鍵,然後選取 [設定散發] 來啟動散發精靈。

[圖 6] SQL Server Management Studio:複寫

[圖 6]** SQL Server Management Studio:複寫 **(按影像可放大)

在精靈中,確定主要部署伺服器應該是作為自己的散發者。將開機快照集資料夾設定成之前建立的 SQL Server 複寫共用的 UNC 路徑。最後,將主要部署伺服器設定成發行者。

當精靈順利將伺服器設定成發行者和散發者後,您必須告訴 SQL Server 要發行哪個資料庫。方法是,以滑鼠右鍵按一下 [複寫] 資料夾,然後按一下 [發行者內容]。在內容對話方塊中,選取 [發行集資料庫],然後選擇您的 BDD 2007 資料庫進行交易式複寫,如 [圖 7] 所示。您實際上並不是使用交易式複寫,但無論您的用意是快照集或是交易式複寫,都是選取這個選項。

[圖 7] 發行資料庫

[圖 7]** 發行資料庫 **(按影像可放大)

您現在必須建立一個發行集,供子系部署伺服器訂閱。在 [複寫] 資料夾中,以滑鼠右鍵按一下 [本機發行集],然後選取 [設定散發] 來啟動散發精靈。選取 BDD 資料庫作為要發行的資料庫。選取快照集複寫作為發行類型,並指定要複寫所有的資料表、預存程序和檢視。您應該選擇立即建立初始快照集。排程快照集代理程式時,除非您打算經常對資料庫進行變更,否則預設一天執行一次應該就綽綽有餘。

最後一步是讓子系部署伺服器訂閱此發行集。這會告訴 SQL Server 在指定的間隔將資料庫的副本發送到每部子系部署伺服器。在 [複寫] 資料夾的 [本機發行集] 子資料夾下,找出剛剛建立的發行集,以滑鼠右鍵按一下,然後選取 [新增訂閱] 來啟動訂閱精靈。在此精靈中,選取您在上個步驟建立的 BDD 發行集作為選定的發行集。選擇在散發時執行所有代理程式,讓複寫拓樸成為發送訂閱。然後將每部子系部署伺服器新增成訂閱者,並提名您在每部伺服器上建立的資料庫來接收複寫資料的副本 (請記住,這個資料庫的名稱應該跟主要部署資料庫相同)。最後,設定要用於進行連線的帳戶,並定義要用於複寫的排程。這應該與您為快照集代理程式選擇的排程相對映。這個快速導覽說明了讓 SQL Server 複寫順利運作所應該進行的步驟。您應該馬上就可以看到資料開始進行複寫!

設定 BDD 2007

到目前為止,您設定了 BDD 2007 讓它使用資料庫,並將資料庫和 BDD 2007 發佈共用複寫到子系部署伺服器。若要完成部署方案,您必須設定 BDD 2007,如此一來,當用戶端下載 BDD 開機環境時,它便可自動連線到屬於其本機部署伺服器的任一伺服器。

當您開機進入精簡式 Windows PE 環境時,若用戶端是從 WDS 伺服器開機的話,Windows PE 中便會設定一個登錄值,來存放用戶端剛剛從中下載開機環境的伺服器名稱。初始 BDD 2007 部署指令碼會取得這個值,然後把它存放到一個稱為 %WDSServer% 的環境變數中。

要注意的是,如果您是使用初版的 BDD 2007,可能會發現這個值在 Windows PE 登錄中並沒有適當填入。您可從 support.microsoft.com/kb/937191 取得更新來修正此行為。

若要設定 BDD 2007,只要編輯 BootStrap.ini 和 CustomSettings.ini 組態檔,以 %WDSServer% 取代部署伺服器的任何參考即可。這通常牽涉到連同取代 SQL Server 執行個體名稱的值和 DeploymentRoot (亦即保存發佈共用的伺服器) 的值。在 [圖 8][圖 9] 中顯示了範例 Bootstrp.ini 和 CustomSettings.ini 檔案的摘要內容。

Figure 9 CustomSettings.ini

[Settings]
Priority=MMSettings, MMApps, CSettings, CRoles, RSettings, RApps, Default
Properties=Manufacturer

[Default]
OSInstall=Y
DeployRoot=\\%WDSServer%\Distribution$
UserDomain=BUILDLAB
UserID=BddAdmin
UserPassword=Password1234

[CSettings]
SQLServer=%WDSServer%
Database=BDD_DB1
Netlib=DBNMPNTW
Table=ComputerSettings
Parameters=UUID, AssetTag, SerialNumber, MacAddress
ParameterCondition=OR

[CRoles]
SQLServer=%WDSServer%
Database=BDD_DB1
Netlib=DBNMPNTW
Table=ComputerRoles
Parameters=UUID, AssetTag, SerialNumber, MacAddress
ParameterCondition=OR

Figure 8 Bootstrap.ini

[Settings]
Priority=Default

[Default]
DeployRoot=\\%WDSServer%\Distribution$
UserDomain=BUILDLAB
UserID=BddAdmin
UserPassword=Password1234
SkipBDDWelcome=YES

請注意這套方案規定將 WDS 與 BDD 2007 複寫資料庫和 BDD 2007 複寫發佈共用放在同一部伺服器上。理由應該很明顯:它可讓您使用 %WDSServer% 變數來提供簡單的保全方法,告知用戶端機器其本機部署伺服器的所在位置,並防止它跨 WAN 回頭進行交談。

其他考量事項

BDD 2007 的好處在於您可以擴充它,所以擴充此方案時有許多層面可考量。舉例來說,您可以使用內建功能來監視 SQL Server 和 DFS-R,設計各種方法使用資產管理資料庫的資訊來填入環境內的各部電腦,甚或是使用 SQL Server 預存程序來擷取這類資訊。遺憾的是,本文的篇幅不夠,不過希望您已從中窺探出一些在自己的組織中統馭 BDD 功能的方法。

Adam Shepherd 是在英國服務於微軟顧問服務 (Microsoft Consulting Services) 的顧問。Adam 的技術專長著重於部署、維護和管理 Windows 用戶端。您可以透過電子郵件地址 adamshep@microsoft.com 與 Adam 連絡。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.