2005年11月06日

经过几天的反复测试,终于完成了ADS部署XP的试验。看来不经过反复的失败、试验是无法从胜利中得到技术和知识积累的。

ADS原则上是不支持桌面操作系统的,因为ADS控制客户端必须依靠ADS代理,而进入ADS代理环境有两种方式,第一种是在Windows 2000服务器版和Windows Server 2003上安装代理程序,而此程序只支持有限的系统版本;另一种是使用PXE引导至ADS的代理环境。从以上所述可以看出要想真正的实现全自动化部署,ADS代理占着至关重要的地位。

经过多次的试验,XP的全自动化部署还是可行的。重点在于选择正确的部署顺序,并修改执行任务脚本。在这次的试验中,我的方法如下:

1、安装XP原型机,做系统准备工作,生成全自动化mini安装应答文件,并修改相应的变量,最后手工执行sysprep及其必须的参数;

2、在ADS服务器中添加此设备,修改默认任务为boot-to-da,添加此设备对应的变量并授予控制;

3、开启原型机,检查其是否顺利进入代理环境并进入预备状态;

4、创建新的Capture-Image任务脚本,其任务顺序是:捕获系统映像(或其他分区映像)—> 修改原型机的sysprep.inf(因为原型机上的sysprep.inf包含ADS变量,当重新启动后会无法正确执行自动化mini安装,所以要将变量修改为实际值)—> 将原型机默认任务修改为boot-to-hd —> reboot ;

注:此步骤虽然按照自动化理念执行,但是当原型机重新进入系统后,ADS的控制便会出现错误,首先表现在任务执行最后一步reboot无反馈,导致任务一直在执行状态,这时候你需要手工停止任务。原因很简单原型机上未安装ADS代理,曾经尝试在任务脚本最后添加adsdevice /rc ,但是发现在代理环境下不允许执行此命令,所以最终还是要手工将其释放控制。不过,我感觉最后的reboot可以更换为shutdown,这样原型机关闭电源后,ADS设备中就可以正常释放控制,否则你会发现原型机重新启动后,ADS设备管理中你无法释放控制。

5、在ADS设备中添加要部署的客户端设备,修改默认任务为boot-to-da,添加此设备对应的变量并授予控制;

6、开启此客户端,检查其是否顺利进入代理环境并进入预备状态;

7、创建新的Deploy-Image任务脚本,其任务顺序是:对客户分区(如果存在多个分区,你可以添加多条分区指令)—> 部署映像(如果要部署多分区映像,可添加多条指令) —> 修改目标客户端上的sysprep.inf —> 将原型机默认任务修改为boot-to-hd —> reboot ;

至此ADS部署XP就算完成,如果客户端支持网卡远程启动,那么就实现了真正意义上的全自动化。多么希望ADS代理支持XP或者2000PRO,曾试着解包代理程序去掉系统版本验证,可惜对这些确实不精通无奈放弃,希望其他朋友能有能力修改代理程序使其支持桌面版系统。

在此次的试验中我大概算了一下时间,捕获和部署映像的耗时差不多,在PIV2.4G/128M的虚拟机中,各需10多分钟,而这个时间还只是捕获纯系统映像,如果系统安装有应用软件,或包含其他分区映像捕获需要的时候可能更长。而ghost单机克隆时,只需要3分多钟,但是ADS的优势还是显而易见的。

接下来我将找一个实际的环境进行大规模部署测试,希望能拿到一个实际数据来对比ghost网播。

2005年10月30日
原创:Windows Server 2003的信任关系
大庆油田高级人才培训中心 张东辉



  企业由于公司兼并,或与业务伙伴的合作,在其网络环境中常常会有两个林或更多。这时建立适当的信任关系将极大地方便用户的访问,而不必去记那么多的用户名和密码了。
  03的信任关系与2000相比,操作界面上有了较大的变化,并增加了林信任关系、选择性身份验证、名称后缀路由等新功能。这些变化再加上林、域功能级别的增强,使得一般的小型网络的网管员(平时极少用到信任关系)更加摸不着头脑。本文将从信任关系的基础知识、2000的信任关系开始介绍,由浅入深,重点讨论新增的林信任关系选择性身份验证
  本文包括很多操作、排错细节,建议收藏此文,需要时查询。

一、信任关系基础知识

1、信任关系有什么用?
  域是安全边界,若无信任关系,域用户帐户只能在本域内使用。信任关系在两个域之间架起了一座桥梁,使得域用户帐号可以跨域使用。确切地说就是:信任关系使一个域的DC可以验证其它域的用户,这种身份验证需要信任路径。

2、A域与B域没有信任关系,A域的用户将不能访问B域上的资源
  常见的错误理解:A域与B域没有信任关系,A域上的员工(注意:我没有使用“用户”这个词)将不能访问B域上资源。
  实际上当然是可以访问的,但你必须在随蟮龅验证界面,提供B域上的用户帐号、口令才行(类似于我们访问工作组上的资源,必须提供目标计算机上的用户帐号、口令才行),提供本域的任何帐号都不好使。
  所以这句常见于各种教材的话,应该这样理解:“A域与B域没有信任关系,A域上的员工使用自己在A域的用户帐号,将不能访问B域上的资源”。

3、A域信任B域,信任关系方向表示为:A—>B。这使得B域的员工使用自己在B域的用户帐号(后面为了描述上的方便,还是采用惯例,表示为:B域用户)可以直接访问A域上的资源(当然,用户得具有访问所需的权限才行),而不会弹出身份验证对话框。访问方向表示为:A<—B,我们需要记住的要点:访问方向与信任方向相反

4、要想实现上述信任关系,使B能访问A。应首先在B提出申请,然后在A上批准。与我们的社会生活相类比(下级提出申请,上级领导批准)记住操作要点:在信任关系对话框中(如下图:2000的信任关系对话框)在界面的下框提出申请(在B上操作),在界面的上框进行批准(在A上操作)。(这样不用去记或理解那些绕道人的话了)

 

二、2000中的信任关系

1、父域-子域间的、树根域间的默认、双向、可传递的信任关系,在添加域到林时自动创建信任路径。

2、林内域间的快捷信任关系:手动、单向、可传递,可用建两个单向来实现双向。


 
  如上图,默认:在林内B域的用户可以访问域C、域2上的资源。但为了提高验证、访问的速度,可以手动创建域间的直接连接的快捷信任关系,从而缩短信任路径。

3、与NT4域、其它林的域、Kerberos V5领域间的不可传递的信任关系。需要手动创建,可用建两个单向来实现双向。
【说明】
(1)NT4域上的信任关系都是不可传递的
(2)Kerberos V5领域是指一种与2000/03域相类似的非Windows(如:UNIX)的、使用Kerberos V5协议的安全区。

三、03中的信任关系
 
1、预备知识:域功能级别、林功能级别



  与2000相同之处,下面将不再赘述。我们看一下03新特色:
2、可传递的林信任关系(又名:联合森林)
  (1) 两个林必须都是03林功能级别
  (2) 只能在两个林的林根域之间建立,可单向也可双向。
  (3) 操作权限要求:林管理员,即企业管理员。默认林根域的域管理员即是林管理员。
  (4)传递性是指由林根域向其下的林内各域进行传递,从而使两个林中的所有域之间存在可传递的信任关系。需要注意的是:此信任关系并不会在林之间传递,比如:A林信任B林,B林信任C林,并不能推出:A林信任C林。

3、实施前的DNS准备:以保证两个林能互相找到。
  在两个林的林根域所用的DNS服务器上,互建存根区域是最好的办法。
【说明】即使目标林有多个树、多个域,有多台DNS,只要目标林原来DNS结构是正确完善的,那么就只在林根域上互建存根区域即可。
  常见错误:“不是由DNS服务器加载的区域,尝试加载区域时DNS服务遇到一个问题。来自主服务器的区域数据复制失败……” 
  解决:在相应的源区域上/右键/属性/“区域复制”标签下,设置允许区域复制即可。

4、创建林信任关系(全林身份验证)
  以A林(林根域为a.com)信任B林(林根域为b.com),即信任关系方向为:A—>B为例:
  (0) 在b.com上(实际上对于03,在哪个林上操作都可以,这里只是为了条理清晰)
  (1) 开始/程序/管理工具/AD域和信任关系
  (2) 在林根域:b.com上/右键/属性/“信任”标签下,单击“新建信任”,弹出向导
  (3) 信任名称,输入:a.com
  (4) 信任类型,选择“林信任”(说明:林信任外部信任的不同之处就在于具有可传递性,使得林内的用户可以在另一林中的任何域中得到身份验证)
  (5) 信任方向,按照我们前面假设的场景,应选择:“单向:内传”
  (6) 信任方,这里提供两个选项“只是这个域”、“这个域和指定的域”。选择前者,回头需要在A上再做一遍“批准”操作;若选择后者,接下来输入A林中林管理员的身份,可以一次就完成了。在这我们选择后者“这个域和指定的域”。
  (7) 用户名和密码,输入A林的林管理员用户名和密码
  (8) 传出信任身份验证级别——指定林,这里我们选择“全林身份验证”,关于“选择性身份验证”等一下将专门讨论。
  (9) 选择信任完毕,下一步
  (10) 信任创建完毕,下一步
  (11) 确认传入信任,选择“是,确认传入信任”来验证一下唇ǖ男湃喂叵礬n  (12) 路由名称后缀——本地林,默认选中B林中所有的名称后缀(林根的、另一树的),下一步
  (13) 完成。
  至此林信任关系创建完成,B林中的员工使用自己在B林中的用户帐户就可以直接访问A林中的资源,而不会弹出验证对话框。
  但要注意的是:要想真能访问,还需要在A林的具体资源上设置B林用户/组的权限才行。具体:在A林的具体资源/右键/属性/安全/添加/位置,选择B林(由于此时已经完成了林信任关系的创建,所以此时可以看到B林了),输入用户/组名(或点高级/立即查找后选择),确定。要求输入网络密码,输入对B林AD有读权的一个普通帐号即可,不必非得B的林管理员。
  另外,明白了单向的信任关系的创建,双向的就更简单了不再赘述。

四.创建林信任关系(选择性身份验证)

  我先来看一个微软的案例:企业B收购兼并了企业A,这样新企业中就有了两个林:a.com和b.com,要求利用信任关系实现:
  (1)b.com林的用户可访问a.com林上的所有资源,
  (2)而a.com林的用户只可访问b.com林上的部分(某台服务器或某个域)资源。

  实现要求(1),利用我们前面的步骤4:创建林信任关系(全林身份验证)即可;要想实现要求2,就得用到林信任关系的选择性身份验证了。具体如下:
1、参照前面的步骤4,在a.com上创建信任,过程中选择“选择性身份验证”即可。
  【说明】在信任关系/属性/“身份验证”标签下的身份验证级别是可修改的。利用这一点,我们可简化此案例的解决步骤:先创建双向、全林身份验证的林信任关系,再在b.com上(上框、下框操作均可以,实际是同一内容),将对A的信任关系上由“全林身份验证”改为“选择性身份验证”。以上步骤甚至可以在向导中一次全部完成,但建议初学者最好按步骤分解执行,以利于对知识点的理解。

2、在B林的具体资源(想允许A林用户访问的部分资源)上,设置相应的访问权限。

  至此A林用户仍不能访问B林上的允许其访问的那部分资源(虽然已设置了相应权限),否则“选择性身份验证”与“全林身份验证”就没有什么不同了。此时访问的出错提示为: 



  接下来的内容,是我们讨论的重点,这部分内容无论是联机帮助,还是微软的技术文档都未做详细介绍。

3、基于计算机帐号设置“允许身份验证”权利。
(1)在B林上,开始/程序/管理工具/AD用户和计算机
(2)选中“查看”标签下的“高级功能”
(3)在Computers容器或具体OU下,找到要允许A林用户访问的那台计算机帐号
(4)右键/属性,在“安全”标签下,添加/位置,选择A林(由于此时已经完成了林信任关系的创建,所以可以看到A林)
(5)输入用户/组名(或点高级/立即查找后选择),确定。要求输入网络密码,输入对A林AD有读权的一个普通帐号即可,不必非得A的林管理员。
  【说明】
  I、可根据需要,选择A林中各域的用户或组,某一域的所有用户可利用Domain Users组。
  II、Win03系统在此处的BUG问题
  假设A林情况如下:林根域a.com,子域sub.a.com、sub2.a.com,另一树根域tree.com。比如同时添加此四个域的Domain Users(或其它用户/组),则会在“安全”标签的“组和用户名称”框中标识不清,显示为:
Domain Users (A\Domain Users),大写A表示林根域,很稳定。
Domain Users (a\Domain Users)
Domain Users (a\Domain Users)
Domain Users (a\Domain Users),这项有时能标识清楚,为:Domain Users (TREE\Domain Users)。但嗍焙蚝颓傲较钜谎谷朔植磺逵没?组是哪个域的,只能去试。这时如果还有其它故障,那对管理员排错来讲,就会非常麻烦。
但大家也不必过于担心,只要你设对了,系统本身能将其识别清楚的。
  III、常见问题:当添加A林中另一树(如tree.com)下的域用户/组时,提示:tree.com的域控制器不可用(如下图)。

 

  产生原因:在创建信任完成时,若选择“否,不确认传出(或传入)信任”,则在名称后缀路由中仅启用林根域*.a.com的路由,树根域*.tree.com的路由默认禁用。
解决:在信任关系/属性/“名称后缀路由”标签下,启用*.tree.com的路由即可。

 (6)添加的A林用户或组将出现在列表中,设置其“允许身份验证”权利,确定。

  那么到这里,A林中的用户就可以访问B林上的允许其访问的某台服务器上的资源了。
  但假如A林用户需要访问B林中的多台服务器,甚至B林中某一域的所有计算机上的资源,那么该怎么办呢?微软不会让我们逐台去设吧!经过研究发现,我们其实可以基于OU或域来设置“允许身份验证”这项权利。

5、基于OU或域设置“允许身份验证”权利。
(1)开始/程序/管理工具/AD用户和计算机
(2)选中“查看”标签下的“高级功能”
(3)在相应的OU或域上右键/属性,在“安全”标签下,添加/位置,选择A林
(4)输入用户/组名(或点高级/立即查找后选择),确定。要求输入网络密码,输入对A林AD有读权的一个普通帐号即可,不必非得A的林管理员。
(5)添加的A林用户或组将出现在列表中(注意:此时直接设置“允许身份验证”权利,你是找不到这项权限的,接下来的操作步骤是关键)
(6)点“安全”标签上的“高级”
(7)“权限”标签上,保证光标在A的林用户或组上,点“编辑”
(8)对“对象”标签,“应用到”下拉框中选择“计算机对象”(9)选中“允许身份验证”权利即可,确定。

【最后的说明】实验中发现,建立林信任关系后,再在林中添加域。要想使新的域也获得传递的林信任关系,需要重新建立林信任关系。

Automated Deployment Services (ADS)系列学习
—— 部署 Windows Server 2003 实录
•实录背景
•ADS 简要概述
•ADS 产品特性
•实验环境介绍
•部署 ADS 服务器
•准备原型机
•创建原型机系统映像
•为客户端部署映像
•实录感想
•相关链接

实录背景
ADS发布已经有一段时间,早先曾做过ADS1.0的实验,但因技术参考资料贫乏,而且了解的人不多无法共同学习讨论。那段时间几乎都在看技术资料,MVP文章,Webcast课程,反复实验但都总因为不知名的错误而停滞不前,最后几乎走火入魔(英文阅读能力差,机器配置低,反复实验经常要等待,而且要重复很多步骤),实在无法继续下去,决定暂停!待有更加全面的资料公布或新版本发布后再作实验。
1个多月过去了,偶然发现微软在其网站发布了ADS1.1,于是兴奋的下载下来准备再次准备实验。在经过前期准备后开始了此次利用 ADS来部署WinSrv2003的实验。中间也遇到了很多问题,反复查资料看KB最终换来了成功。而这篇文章实际意义主要是为了给自己的实验作备忘,汇总每个资料中的关键信息,并通过每个实验细节的介绍使那些希望学习ADS的朋友们不必再因为参考资料的某些问题而走弯路。
希望大家能从此篇文章中获得有价值的东西。因本人并不是微软的技术专家,所以篇中用词可能并不规范并且不免有遗漏或错误,还请大家谅解指正。

ADS 简要概述
Automated Deployment Services,自动化部署服务,简称ADS。
在Windows Server 2003中,Microsoft对平台进行了扩展,管理员可以通过它容易地构建和管理超大型的可伸缩Windows服务器部署。自动部署服务(Automated Deployment Services,ADS)包括一组Microsoft开发的新映像工具,以及一个可以用来在裸机服务器上快速部署Windows 2000 Server和Windows Server 2003的、更安全且具有远程操作能力的基础结构。此外,ADS提供了一个更加安全、可靠的脚本执行,允许管理员像管理一台服务器那样简单地在1000台服务器上执行基于脚本的管理工作。

ADS 产品特性
在ADS中,计算机被称之为设备(Device),所有被管理的设备都需要安装ADS中的Administration Agent(简称:代理程序)。ADS服务器需要由三部分组成,它们是:Controller Service(用来集中管理设备)、Network Boot Services(简称NBS,用来客户端的远程计算机启动)、Image Distribution Services(负责映像创建和部署)。这三个部分可以被分散在多台计算机,也可以集中安装在一台计算机。
ADS使用数据库来存储信息,在ADS安装源中包含有他的本地MSDE,或者使用一个本地或远程的SQL Server 2000服务器。
ADS需要一台DHCP服务器来为客户端作引导服务,同时ADS服务器本身也支持动态IP分配,因此ADS服务器静态IP配置不是必须的。另外建议不要在ADS服务器上部署DHCP服务。
ADS客户端需要支持PXE引导,或被利用RIS工具创建PXE引导盘,前提是你的网卡在RIS所支持的清单中。
ADS不依赖微软的活动目录,一个简单的LAN环境就可以实现ADS。它的任务脚本强大,可以实现对客户端更加细微的管理能力(如:为客户端分区)。
ADS的设计目标前面提过了,主要是用来大规模部署服务器。但是在微软讲师和MVP的技术资料中提及ADS同样可以用来部署Win2000Pro或XPPro,不过我想可能会有很多需要修改的地方,这也是我以后的实验目标。
以下是ADS的关键属性表,大家可以参考:
ADS关键属性表
典型场景 数据中心,计算机中心,大规模部署
部署的操作系统 Windows Server 2003:所有32位版本
Windows 2000:所有服务器版本(SP3以上)
可用性 可以运行在Windows Server 2003企业版和数据中心版
部署方式 基于映像
部署初始化 部署控制服务,推模式
支持多播部署 是
每服务器部署的并发数量 最大128(多播),部署速度不受服务器并发部署数量影响
每计算机多个卷的部署 是
部署映像文件格式 NTFS,FAT16,FAT32
映像编辑工具 是
根据硬件抽象层(HAL)自动映像过滤 否
DHCP服务器类型 任意
活动目录需求 否
配置信息存储源 Microsoft SQL Server
编程可扩展性 是
为了方便在有防火墙的环境下实验,以下列出ADS所涉及到的端口:
Communication ports used by ADS
Device to the DHCP server
Protocol Direction Port Notes
DHCP Device (PXE firmware) to DHCP service UDP 67 
DHCP DHCP service to Device UDP 68 
Device to Network Boot Services
Protocol Direction Port Notes
PXE Device (PXE firmware) to the ADS PXE service UDP 67 and/or UDP 4011 Required to support a device’s boot to the Deployment Agent (using PXE). You can configure the use of port 4011 using the \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetServices\ADSPXE\Parameters\PxeUseDhcpPort registry entry.
PXE ADS PXE service to the device UDP 68 
TFTP Device (PXE firmware) to the TFTPD service UDP 69 Required to download Startnbs into RAM.
DHCP Device running Startnbs to the Deployment Agent Builder service UDP 4012 You can configure the use of port 4012 using the \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetServices\ADSBUILDER\parameters\ServerPort registry entry.
DHCP Device (Ntldr) to the Deployment Agent Builder service UDP random port 
TFTP Device (Ntldr) to the TFTPD service UDP 69 Required to download the Deployment Agent image into RAM.
Device to the Image Distribution service
Protocol Direction Port Notes
Image download (multicast) Device to the Image Distribution service UDP 30877 or 30878 Required for image capture and deployment. Requires DHCP multicast address allocation. IP addresses are not the device’s, but allocated multicast address.
Image download (unicast) Device to the Image Distribution service TCP 30877 
Image transfer Image Distribution service to the device UDP 30877 through 31878 
Device to the Controller
Protocol Direction Port Notes
BMDP Device to the Controller UDP 8197 Required for remote execution of jobs on the device (both in Deployment Agent and in Administration Agent). You can configure the use of port 8197 using the \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetControl\BMSS\BmdpIpPort registry entry.
BMDP Controller to the device TCP 8198 You can configure the use of port 8197 using the \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetControl\BMSS\BmcpIpPort registry entry.
BmFileXfer file transfer Controller to the device TCP 19778 
Controller to Network Boot Services
Protocol Direction Port Notes
BMDP  UDP 8197 Required to support NBS. You can configure the use of port 8197 using the \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetControl\BMSS\bmdpIpPort registry entry.
BMDP  TCP 8198 You can configure the use of port 8197 using the \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetControl\BMSS\BmcpIpPort registry entry.
Controller to the Image Distribution service
Protocol Direction Port Notes
BMDP  UDP 8197 Required to support the Image Distribution service. You can configure the use of port 8197 using the \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetControl\BMSS\bmdpIpPort registry entry.
BMDP  TCP 8198 You can configure the use of port 8197 using the \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSetControl\BMSS\BmcpIpPort registry entry.

实验环境介绍
因为我没有实际的测试环境所以需要依靠虚拟系统来搭建实验环境,为了提高虚拟机的运算性能,我在VMwareGSX下部署ADS服务器,在Virtual PC部署客户端。每台虚拟机都会分配128M内存,并为ADS服务器和原型机部署Windows Server 2003企业版。DHCP则使用实际环境下的服务器。因为服务器和客户端都使用动态IP分配,所以在这里就不再只能每台设备的IP地址。当然大家也可以根据自己的习惯选择虚拟机软件。
呵呵,忘记介绍我做实验用的宿主机配置。PIV2.4G/512M/80G,跑两个虚拟机是没有问题的,就这样的配置曾经还跑过三台虚拟机作群集实验,不过我想磁盘寿命估计已经大大减少。

部署 ADS 服务器
微软为我们提供了ADS的免费下载,你可以从本文相关链接中获取它的下载地址。下载得到的文件是一个自解压文件包,我将其解压缩在系统所在磁盘并将目录命名为ADS_Setup。当解压缩完毕后ADS的安装主界面会自动载入。

ADS的配置信息都保存在数据库中,为此要先安装MSDE。当然也可以安装SQL Server 2000,这个我们在之前已经提醒过。


    点击ADS主安装界面中的“Install Automated Deployment Services”开始安装。


在此次实验中,我将会把ADS的三个组件都安装在这台服务器上,为此在安装类型选择中选择“Full Inetallation”。这里要注意的是请使用默认的安装路径,否则在下来的部署中可能会遇到意外错误。(这是微软专家们提到的,我想还是照办为好!毕竟ADS才刚刚发布没多久,免不了有Bug。)


在点击下一步后会弹出一个警告,因为安装了NBS服务,它包含ADS PXE服务,所以要求在此网络环境中应该禁止存在RIS服务器。点击“OK”继续下一步。


选择数据库,如果没有使用SQL Server那么请保持默认选择。并选择创建一个新的ADS数据库。


    这里请在光盘驱动器中放入Windows Server 2003的安装光盘,ADS需要从中拷贝文件来创建客户端引导代理环境所需要的虚拟启动磁盘(RAM Disk),在磁盘上对应的目录是%Program Files%\Microsoft ADS\WindowsCD。


    这一步是创建WinPE预部署环境,我放入WinPE光盘发现并不能安装,可能是因为我的安装光盘不符合要求,或者有其他安装方法,这里我选择不创建WinPE。


    注意,请使用默认的安装路径,原因嘛我就不再重复,这个文件夹是用来保存捕获的映像文件的。


    在完成ADS的安装后,我们首先要作的是将ADS附带的任务执行脚本模板导入ADS管理器中。有了这些任务模板,我们的工作可是事半功倍,就不需要再去自己编写任务脚本了。为此,需要运行%Program Files%\Microsoft ADS\Samples\Sequence目录中的Create-template.bat文件。


文件执行完成后,在Windows程序项中找到Microsoft ADS菜单项,点击运行“ADS Management”,就打开了ADS的MMC管理界面。展开Job Templates查看是否显示出导入的模板。


    为了能够管理客户端执行部署任务,我们需要将计算机添加到ADS中,为此我们在Devices中添加一个设备。


    之前我已经创建了一台原型机,获取该原型机的名称及网卡MAC地址并填写在这里。


    至此客户端的添加就完成了,但是该客户端端还无法执行任务,为此需要右键单击并选择Take control。


    客户端设备默认通过PXE引导,为了能正确进入代理程序,我们需要修改该设备属性中General下的Default job Template选项为boot-to-da。

准备原型机
    上面我们已经安装好了ADS服务器,并将原型机添加至设备中。但是如果要成功捕获原型机的系统映像,则必须在原型机上安装ADS代理程序,之后还要再作其他设置。

    首先我们将ADS安装包下的ADSAgentSetup.msi拷贝到原型机上并运行它。


    ADS和设备之间的安全认证方式与RIS不同,RIS使用活动目录来做验证,而ADS并不需要活动目录环境,所以只能依靠证书来做认证。ADS安装后在其目录下有证书目录,里面有个名字为adsroot.cer的证书,我将其拷贝到我的原型机下,并在这里填写正确的路径。当然,除了使用ADS自带的证书外,也可以使用自己的企业CA。


    登录方式选择中,我指定使用系统权限来运行服务。


    还是那句话不要修改安装位置。

创建原型机系统映像
    在安装完代理程序后,可以回到ADS服务器上,这时你会发现设备中的计算机上的红叉消失了,如果还没有请刷新或者进入此设备属性中填写原型机的IP地址,确认后你的原型机GUID值和正确的计算机名称将被传递过来。在此实验中我是先添加的设备后安装的代理程序,你可以反向操作,这样可以直接成功,ADS也支持自动查找,只要安装有ADS代理程序都能被ADS服务器查找到。另外需要注明的是:如果你要为一台设备部署操作系统,那么只要添加设备时直接填写MAC和名称就可以。

要完成客户端的自动化部署,需要使用sysprep工具在原型机上重新生成唯一的SID,因为执行sysprep后系统会进入最小化安装状态,所以我们还要创建sysprep方式的应答文件。在以前的权威资料中指出的操作是将%Program Files%\Microsoft ADS\Samples\Sysprep下对应的应答文件拷贝到原型机的C:\sysprep\i386下并更名为sysprep.inf,其实我实际测试中此举并不能完成最小化的自动安装。也就是因为这个sysprep,让我反复复位系统了n次。想起来我都头大,郁闷!就这个问题难道资料中就不能指出来么?经过我的反复测试,最终是这样顺利完成实验的。
首先,在C盘下建立名为sysprep的目录,将系统安装盘下deploy.cab文件中的setupcl.exe、sysprep.exe、setupmgr.exe提取拷贝至C:\sysprep目录下。
然后,使用setupmgr.exe制作sysprep方式的全自动应答文件,保存在C:\sysprep目录下,并命名为sysprep.inf。对比ADS自带的应答文件你会发现有所不同,ADS自带的应答文件中没有包含OemSkipEula的值,这样将直接导致在客户端设备进入最小化安装后,会提示你确认协议。另外关键的地方在产品安装钥匙、计算机名、超级用户密码、工作组名这四处。(其中最关键的是前三项,不过我实验过程中发现如果在原型机上已经设置了超级用户的密码,那么你只需要关注前两项就可以了,因为就算你在应答文件中重新输入新的密码仍然不会更该之前的密码。)他们是类似^ADS_Computer_Name^这样的字符串,这就是ADS变量。而我做的自动应答文件是不会被ADS所识别的,必须修改其中关键的那四项字符串。为此请对照两个文件修改!
最后,一定要在C:\sysprep目录下建立一个名为i386的目录并在其下建立名为$oem$的子目录,否则你的自动应答文件写的再好,sysprep后进入最小化安装模式也不会被应用。就这个问题,我实在不知道该怎么泄愤了,也许官方的资料并没有错,而是我哪里疏忽了,但实际中却必须要这样做。具体可以参考我的一篇Blog:http://goxia.maytide.net/p/sysprep.php


    因为没有按照权威资料来做实验,所以我们需要修改任务模板,启动ADS程序组中的Sequence Editor,打开捕获映像的模板capture-image.xml,修改sysprep的路径为你原型机中sysprep的实际路径。


    我们要为捕获的映像包起一个便于记忆识别的名字,为此在Capture Image中填入自己需要的映像包名称,为了快速顺利的完成实验,我没有选择Compress这个选项来压缩我的映像包。


    要捕获原型机的系统镜像,需要为原型机指定任务。为此,在设备上右键选择Run Job…


    因为之前我已经导入任务模板,所以这里选择Use an existing job template


    在列表中选择我之前修改过的任务模板:capture-image


    此时原型机开始执行所分配的任务,在执行Sysprep后系统重新启动进入PXE引导。


    此时载入RAM Disk,为进入代理模式作准备。记得第一次实验ADS1.0时就在这里被卡了,反复测试都无法通过这里,也不知道因为什么,看capture-image中的命令没有什么不对,后来也就是因为这个问题才结束了实验。后来在ADS1.1的首次测试中,一次就过去了。估计不是因为我当时的实验环境不稳定就是因为ADS1.0有Bug。关于ADS1.1的首次测试记录可以访问我的blog:http://goxia.maytide.net/p/ads.php


    兴奋的时刻到来了,设备成功进入代理环境,并开始执行捕获系统镜像的任务。现在可以休息一下了!休息一下!秋天到了,天气比较干燥,我建议大家多吃些洋葱,喝些菊花茶。菊花茶,嘿嘿!我去接水喝,一会见!


系统映像捕获完毕后,就可以关闭这台原型机。这里不能提到ADS的一个功能,或者应该说是命令。ADS捕获的镜像被打成包保存在C:\Image下,此包的扩展名是.img,ADS中imgmount.exe命令可以将这个映像包映射为本地磁盘以便我们查看其中的内容甚至修改里面的内容。在命令行环境下键入imgmount /m /w filesname.img,其中/m参数就是加载映像也可以/mount。/w参数能够实现映像文件映射为本地磁盘后对其的写操作。
如果要卸载这个磁盘则运行:imgmount /u filesname.img,更多的命令可以使用/?来查看。

为客户端部署映像
完成了系统映像的捕获实验,大家是不是心里很开心。映像得到了,我们就该完成此次ADS实验的最后一个环节。这样心里才舒坦,您说是不!俏皮话就不多说了,我只是为了缓解一下我写此文时的疲劳感!
我用Virtual PC创建了一台虚拟机使用client命名计算机,分配了16G的硬盘空间,内存还是128M,首次开机引导之后将其关闭,然后打开.vmc文件,也就是虚拟机的配置文件。记录下MAC地址以备之用。(不这样做,你新创建好的虚拟机配置文件中是不会产生MAC地址的。)

    客户端的部署仍然需要在ADS将其添加到设备中。


    同样将其默认任务配置为boot-to-da,因为只有这样客户端在PXE引导后才能进入代理模式接受ADS服务器的管理。


    还记得前面提到的sysprep的应答文件么?因为在应答文件中使用了ADS的变量,所以我们要为这个设备指定对应的变量值,以便自动完成客户端系统的部署。为此,在User Variables下创建三个必要的值:“productkey、adminpassword、machinename”,同时我们也可以加密这些值使之无法被查看,为此请钩选“Encrypt value”,其中产品安装钥匙的格式应该为xxxxx-xxxxx-xxxxx-xxxxx-xxxxx,同时我们还可以创建更多的变量值来满足我们的部署需要。如指定客户端的IP、DNS等等。此外ADS在群集系统的部署中能够帮助我们减少很多宝贵时间。


    现在,我们需要使这个设备处于被管理状态,为此请执行Take control


    在ADS服务器端的准备已经完成,我们可以重新开启客户端计算机了。这时客户端通过PXE引导载入RAM Disk进入代理环境,等待服务器发布执行任务。


要执行部署,需要指定部署所需要的任务,所以使用模板编辑器打开da-deploy-image-wg.xml,这个文件是ADS自带的部署模板,如果没有它们可以想象我们要费多少精力。
自带的这个模板默认是5G的分区,如果你的原型机分区与之不符就会导致部署失败,所以在此修改容量值。


    之前捕获的映像名还记得么?所以我们需要在Download image中指定正确的映像名称。


    由于我更该了sysprep.exe的默认位置,所以需要在Set sysprep custom info in the sysprep.inf file中修改正确的路径。


    回忆一下是否正确的完成上述步骤,OK!检查完毕,让我们我们开始完成此次实验的最后一步,为客户端指派部署任务。注意:使用Virtual PC+PXE虚拟磁盘的朋友请将这个任务模板中最后两个boot-to-hd删除。否则你会失败!


    选择da-deploy-image-wg为部署任务。


    这时客户端开始执行部署任务,你会发现客户端此时已经开始获取映像。兴奋!!!吸根烟,闭目养神休息会,嘿嘿!别告诉你办公室不能抽烟,那叫惨!注意:使用Virtual PC创建客户端的朋友们注意,此时最好把你载入的虚拟PXE引导盘out出去,否则接下来的启动你会失败。


    忘记告诉大家,ADS还为我们提供了一个任务监视功能,请在ADS控制器中的Running Jobs下双击当前正在执行的任务,这时你就能够监视到每个任务的执行情况。


    在映像获取成功后,客户端重新启动计算机进入最小化安装,此过程将一路闪过,就因为我们使用了正确的应答文件及配置方式。


完成最小化安装后,系统再次重新启动。这时系统将完成最后的任务,将ADS设备属性中的默认任务改为boot-to-hd(从磁盘引导)。在实际环境中因为默认是网卡引导,所以可能会导致设备重新启动后进入PXE引导环境进入代理环境。看看人家微软在设计的时候考虑的多么周到啊!:-P
至此使用ADS部署WinSrv2003的实验就成功完成了。大家心里怎么想的?希望能来五月时节社区参与讨论,网址是:http://forum.maytide.net

实录感想
从第一次开始ADS实验到最终成功完成实验到完成这篇文章,历时近2个月,实际中试验用就去了了1个多星期的时间。其间真是波折起伏,总想放弃但又实在狠不下心,就这样跌跌撞撞中完成了实验。不过好赖总算给自己了一个完美的交代,心里也畅快了很多。
机器配置差,中文资料不丰富,英文资料读不全照实让我吃了一次亏。我想大部分的朋友也跟我差不多少。该反思一下了,反思之后发现做这行对我真没什么前途,具体的心思保密啦,个人隐私!
回到主题,让我们回忆一下之前的操作步骤,其实并不十分繁琐。相反利用微软的ADS完全可以实现我们的自动化部署任务。怪不得微软谈到利用ADS使管理员可以轻松的完成1000台服务器的部署。我很希望能尽快完成客户端的部署实验,大家可能更加关注的也是这个话题。假设,在一个200台客户端的企业环境中,如果使用的是相同的硬件并支持PXE引导,那么管理员对系统的部署将会多么轻松。一切都是在服务器端控制下完成,客户端只需要完成PXE的引导设置就可以。而且利用ADS还可以搭建一个管理平台,利用ADS强大的脚本功能来控制管理客户端,这些都等待着大家去发掘,不要去考虑ADS能干什么,完全看你利用ADS都做了什么,这才是最关键的。如何有效利用工具才是真理。
从这次实验中再次证明!!!
•只有敢于攀登顶峰的人,才能将顶峰踩在脚下。
•不怕失败,超越自我
文章到此也该结束,实在太累了!本人文学功底不强,技术能力也是在学习中得以提高。斗胆写此文章,希望没有浪费大家的宝贵时间,反而更希望能帮助到大家,这才能激励我、鼓舞我。

——帮助别人,从中得到快乐。希望能和大家共同学习、讨论!

五月时节 – MayTide.Net
By gOxiA 
2005年10月28日

 
相关链接
ADS主页:
http://www.microsoft.com/china/windowsserver2003/technologies/management/ads/default.mspx

ADS技术概述:
http://www.microsoft.com/windowsserver2003/techinfo/overview/ads.mspx

ADS相关问答:
http://www.microsoft.com/windowsserver2003/community/centers/management/setupdeply_faq.mspx

ADS的系统要求:
http://www.microsoft.com/china/windowsserver2003/techinfo/overview/adssysreq.mspx

ADS与RIS的比较:
http://www.microsoft.com/china/windowsserver2003/techinfo/overview/risvsads.mspx

ADS在线技术指南:
http://www.microsoft.com/resources/documentation/WindowsServ/2003/all/ADS/en-us/default.asp

ADS1.0下载:
http://www.microsoft.com/china/windowsserver2003/techinfo/overview/adsbenefits.mspx

ADS1.1下载:
http://www.microsoft.com/downloads/details.aspx?FamilyID=d99a89c9-4321-4bf6-91f9-9ca0ded26734&DisplayLang=en