桌面部署

使用 BDD 2007 进行简单的可伸缩部署

Adam Shepherd

 

概览:

  • BDD 2007 的核心功能
  • 与 SQL Server 集成
  • 构建可伸缩部署解决方案

参与部署 Windows 的大部分人都听说过 Microsoft 商用台式机部署解决方案加速器。它也称为 BDD,是一组最佳实践指南和工具,

旨在帮助将 Windows® 部署到客户端桌面。Windows Vista® 包含解决方案加速器的更新,此更新以 BDD 2007 的形式提供。该版本包含新的 Microsoft® 管理控制台 (MMC) 和源自 System Center Configuration Manager 2007(Systems Management Server (SMS) 2003 的后续产品)的任务定序器。

BDD 2007 不为人们熟知的功能之一是它可作为一种完整部署解决方案。在以前的版本中,BDD 通过可管理和可重复的方式帮助您创建和维护桌面映像。现在,BDD 2007 将 BDD 与 Windows 部署服务 (WDS)、SQL ServerTM 以及 Windows Server® 2003 分布式文件系统复制 (DFS-R) 结合起来,为您提供了构建可伸缩部署解决方案的新增功能。

但是等等...不使用 SMS 2003 和操作系统部署 (OSD) 功能包吗?这是全面实现 Windows 客户端部署的建议做法。

是的,如果您已具有 SMS 2003 基础结构,应该直接使用 BDD 2007、SMS 2003 和 OSD 功能包进行部署。这是当前实现零接触部署的最全面方法,它可以真正降低在组织中配置、安装和管理 Windows 的成本。

然而,许多客户并不具有 SMS 2003 或任何等效的软件部署解决方案。对于这样的客户,还有另一种选择,我将在本文中重点讲述。

BDD 2007 核心概念

BDD 2007 提供了两种主要的部署方法。第一种方法即部分接触安装,这种方法仅使用 BDD 2007 进行客户端部署。实际上这代表一组向导,用于在构建时捕获部署信息,如应该分配给客户端的计算机名称(请参阅图 1)、应该使用的键盘布局和时区等等。该方法称为“部分接触”,因为在构建过程开始之前通常需要少量手动输入来收集这些信息。

图 1 BDD 2007 部分接触部署向导

图 1** BDD 2007 部分接触部署向导 **(单击该图像获得较大视图)

第二种方法即零接触安装,该方法通过与 BDD 2007 集成在 SMS 2003 OSD 功能包基础上构建。这种配置可提供完全自动、可伸缩、可管理以及无需人工干涉的部署解决方案。

构建时,客户端操作系统部署首先执行的一个步骤就是 BDD 2007 收集来自大量不同源的信息。这些源包括 WMI 调用和 BDD 2007 配置文件 — Bootstrap.ini 和 CustomSettings.ini。该信息作为变量进行收集和存储,用于整个部署过程。对于部分接触方案,Bootstrap.ini 和 CustomSettings.ini 文件提供预定义所有信息的功能,否则这些信息还需要通过手动输入到部署向导中进行收集。

提前指定所有信息(否则这些信息还需要部分接触向导在构建时进行捕获)的功能允许您在那些 SMS 2003 不支持的环境下自动执行整个部分接触过程,并转移至零接触解决方案。您可以选择预定义的示例信息包括 ComputerName=RDG0001VST 和 TimeZoneName=GMT Standard Time;前者用于为计算机分配名称 RDG0001VDT,后者用于确保计算机的时区设置为格林尼治标准时间。在使用 BDD 进行部署的过程中可以使用的所有属性在配置参考中都有完整记录,配置参考可从以下位置获得:technet.microsoft.com/library/bb490302.aspx

有关设置和使用 BDD 2007 的详细信息,请参阅**《TechNet 杂志》2007 年 9 月刊 (technetmagazine.com/issues/2007/09/BDD) 中的文章“使用 BDD 2007 部署 Windows Vista”。

BDD 和 SQL Server

为什么将数据库和 BDD 2007 一起使用?原因是在部署过程中需要动态提供详细信息,否则还需要通过部分接触安装向导手动输入这些信息。正如我所提到的,可使用 CustomSettings.ini 文件达到此目的。问题在于在现实部署中,这些详细信息将根据部署到的具体计算机而有所不同。同时,如果您尝试为 500 个不同的计算机定义具体选项和设置,CustomSettings.ini 文件很快就变得难以管理。通过向 BDD 控制台附加后端数据库,就可以添加一个更具可管理性的动态和可扩展的解决方案。

让我们深入了解一下 SQL Server 如何与 BDD 2007 集成。首先,应该确保在部署服务器上安装了 SQL Server(最好是 SQL Server 2005 或更高版本)。幸运的是,在 BDD 2007 中创建数据库的步骤很简单:只需右键单击 BDD 2007 部署工作台上的“数据库”节点,单击“新建”,然后按照说明操作即可(请参阅图 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 PC 2007 或 Virtual Server 2005 虚拟计算机。如果在构建时匹配这些属性,则只需将 Virtual Machine Additions 应用程序添加到“品牌和型号”条目中即可告知 BDD 在部署时需要安装该应用程序。

现在已经提供了标识计算机的多种方法,使用“角色”部分可以创建针对您希望提供的每个部署角色的条目。例如,通过向每个条目添加与在 BDD 中定义的 Windows XP 或 Windows Vista 版本相对应的 BuildID 属性,可以构建针对 Windows XP 角色和 Windows Vista 角色的条目。另一种方法就是指定部门角色,如会计、销售或财务。我倾向于在该部分填充 BDD 的大部分属性(时区、区域设置、组织信息等等)。由于这些条目不依赖于任何特定的计算机、硬件或位置,所以对数据库的管理也就很少。

我们需要告知 BDD 2007 应该在部署时在数据库中搜索任何与当前构建的计算机相匹配的条目。要将 BDD 配置为在部署期间使用该数据库,请右键单击部署点,并单击“配置 DB”。然后,会出现一系列向导,这些向导使用相关条目填充 CustomSettings.ini 文件,这些条目可以使部分接触安装过程查询数据库以获取信息。

使部署具可伸缩性

现在您拥有了一个部署服务器,该服务器可自动执行部分接触安装并且可动态设置每个计算机,使之充当特定的业务角色。但是该如何扩展该解决方案?

该解决方案的体系结构基于图 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 使用远程差分压缩 (RDC),仅复制在复制组成员间的文件差分(增量)更改。当对自定义映像文件进行很小的更改时(如新的驱动程序),此功能对复制通信量的影响很大。使用 DFS-R,复制通信量仅相当于所做更改的大小,而不是重新分发的整个映像文件的大小。

在 Microsoft 网站上有很多关于 DFS 的信息,请首先查看 microsoft.com/windowsserver2003/technologies/storage/dfs,但是我将介绍所需的基本设置和配置步骤,以概述在基于 BDD 的部署环境中的过程。

请注意,如果服务器在安装 R2 之前一直基于所安装的 Windows Server 2003 运行 Active Directory,那么 Active Directory 架构也许需要更新以允许 DFS-R 运行,因为复制服务需要新的对象类。有关在 Windows Server 2003 R2 中扩展 Active Directory 架构的全部细节,请参阅 go.microsoft.com/fwlink/?LinkId=99936

第一步是在 Windows Server 2003 R2 部署服务器上安装 DFS 组件。您可通过多种方法完成此步骤,最简单的方法就是使用标准的“添加/删除 Windows 组件”向导。完成后,您需要使用图 5 所示的 DFS 管理控制台设置复制组。

图 5 DFS 管理控制台

图 5** DFS 管理控制台 **(单击该图像获得较大视图)

要扩展 BDD 2007 部署解决方案,需要复制两个特定文件夹。第一个文件夹是承载所有 BDD 源和配置文件的 BDD 2007 分布共享。每个部署服务器都要有这些文件。

要复制的第二个文件夹是 WDS 用于承载 LiteTouch_x86.wim 文件的 Boot 文件夹。这是 WDS 向桌面客户端计算机提供的用于启动部署过程的 BDD 引导环境。您需要复制该文件,这样当父部署服务器上的引导环境发生更改时,更改就会在其余部署基础结构上进行复制。

复制路径为 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 部署工作台数据库,以便每个部署服务器都能得到这个数据库。

SQL Server 使用产品文档描述的复制方法,该方法与出版杂志的方法相同。对于杂志,有出版杂志的出版商,为出版商发行杂志的分销商以及订阅和接收杂志的订阅者。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 浏览器服务处于禁用状态。要允许复制,必须将该服务设置为自动启动。使用 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(承载分布共享的服务器)的值。示例 Bootstrap.ini 和 CustomSettings.ini 文件摘录如图 8图 9 所示。

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 存储过程检索此类信息。很遗憾,由于篇幅所限,在此无法讲述这些内容,但是我已经简要介绍了一些在组织中利用 BDD 功能的方法,希望有所帮助。

Adam Shepherd是英国 Microsoft Consulting Services 的一位顾问。Adam 的技术领域侧重于部署、维护和管理 Windows 客户端。您可通过向 adamshep@microsoft.com 发送电子邮件与他联系。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.