4. 修改 sysprep.inf 以包括变量
mini-setup 使用 sysprep.inf 文件来安装和配置操作系统。这个文件包含您刚添加到 ads 控制器数据库的配置文件详细信息。这种配置信息对于映像来说是静态的。ads 通过允许您在 sysprep.inf 文件中插入变量使得您可以自定义 sysprep.inf 文件。通过这种方式,您可以从 sysprep.inf 文件中删除将随系统的改变而改变的配置信息。而变量配置将转到 ads 控制器中。
在修改映像中的 sysprep.inf 文件之前,您将需要把映像安装到驱动器。ads 有支持这种功能的工具。可以使用下面的命令行语法来更改映像的目录和安装映像:
imgmount /mount /w {imagefilename} /d: driveletter
将驱动器更改为上面的驱动器字母,并且目录更改为 sysprep 目录。有两种创建或修改 sysprep.inf 的方法,您可以通过 setupmgr.exe,也可以通过 notepad.exe。请参见“服务器集群的基于图像安装”部分以获得更多关于 sysprep.inf 的信息。
打开 notepad.exe 中的 sysprep.inf 文件。查找随系统的改变而改变的安装变量。将它们定义为变量而不是将静态值放入 sysprep.inf 文件中。例如,在 sysprep.inf 文件的以下片断中,在行的开头用 * 标记的项可以定义为变量。每个系统的这些设置都有所不同。
[params.ms_tcpip.adapter01]
* dhcp="no"
* ipaddress="10.11.26.11,,172.24.11.141"
specificto=adapter01
* su.netmask="255.255.0.0,255.255.255.0"
* wins="no"
;adapter02 用于公共网络
[params.ms_tcpip.adapter02]
specificto=adapter02
* defaultgateway="172.24.11.1"
* dhcp="no"
* ipaddress="172.24.11.205"
* su.netmask="255.255.255.0"
* dnsserversearchorder="172.24.10.2,172.24.0.2"
* wins="yes"
* winsserverlist="157.55.254.201,157.55.254.203"
[guirunonce]
;请参见本文档的第 2.2.1 节以获得 assigndriveletters.bat 文件的示范文本
;请参见“配置集群”部分以获得 createfs.vbs
*command0=%systemdrive%\scripts\assisgndriveletters.bat
*command1 = "%windir%\system32\cluster.exe /cluster:sv-cluster /create /node:sv-node1 /user:domain\user /pass:***** /ipaddr: 157.5.5.50"
*command2 = "%systemdrive%\clusterinstallfiles\createfs.vbs sv-cluster clustergroup svfileshareresource e:\ svfileshare"
在用变量替换了这些命令之后,该片断将看起来像是这样的。注意每个变量名都是以 ^ 开头且以 ^ 结尾的。它们必须包含在引号之中。如果不这样做的话,ads 将不会正确地安装和配置操作系统。注意:在 guirunonce 部分,上面的样本片断也将集群配置命令替换为变量。在成功安装之后,windows 将在配置集群服务或任何其他指定的服务第一次启动时运行 guirunonce 中的命令。
[params.ms_tcpip.adapter01]
dhcp="^dhcp1^"
ipaddress="^ipaddress1^"
specificto=adapter01
su.netmask="^su.netmask1^"
wins="^wins1^"
;adapter02 用于公共网络
[params.ms_tcpip.adapter02]
defaultgateway="^defaultgateway2^"
specificto=adapter02
dhcp="^dhcp2^"
ipaddress="^ipaddress2^"
su.netmask="^su.netmask2^"
dnsserversearchorder="^dnsserversearchorder2^"
wins="^wins2^"
winsserverlist="^winsserverlist2^"
[guirunonce]
;在形成/加入集群之前装载所有的磁盘卷
command0="^cluster_command_mount^"
command1=^assigndriveletters^
command2="^cluster_command^"
command3=^fileshare^
在您修改了 sysprep.in 文件之后,就可以使用下面的命令行接口来卸载映像。
imgmount u drive:
ads 还允许您通过脚本来定义变量。请参阅 ads 帮助中的管理映像部分以获得更多的信息。
注意:附录 f 包含已修改的完整样本 sysprep.inf。
您还可以使用 setupmgr.exe 来创建、修改无人值守安装文件,带有变量的 syspre.inf 文件。通过 cmd 窗口运行 setupmgr.exe。
查看全尺寸图片。
选择“新建”
查看全尺寸图片。
选择“sysprep 安装”
查看全尺寸图片。
选择您想要部署的操作系统类型
查看全尺寸图片。
查看全尺寸图片。
上面允许您输入用于安装的变量。这里您可以提供您将要在 ads 中定义的变量名来代替提供实际值。例如,^name^ 是其值将通过 ads 进行替换的变量。
查看全尺寸图片。
在完成了上面的操作之后,单击“运行一次”并输入集群配置命令。在上面的示例中,^cluster_create_command^ 变量被插入 sysprep.inf 文件中,它的实际值将定义在 ads 中。一旦用变量创建了 sysprep.inf,就可以保存它,并且通过安装映像到驱动器来将这个 sysprep.inf 文件复制到映像中
5. 创建映像部署的任务序列文件
下一步是创建 ads 控制器的任务序列文件。它是一个 xml 文件,其中包含控制器的任务序列,这些任务序列可以对一个设备执行,也可以对一组设备执行。ads 带有几个样本序列文件,您可以使用这些样本 xml 文件中的任何一个,而且还可以根据您的需要对其进行修改。在这个文件中,您将为控制器定义个性化的变量来替换 sysprep.inf 文件中的变量。此外,您还将定义在控制器的其他任务序列中什么样的任务序列必须对设备运行。例如,划分磁盘、复制映像、替换 sysprep.inf 文件中的变量、重新启动设备和检查设备的状态等等。
您至少将需要修改样本 xml 文件中的如下部分以便它正确地工作。
<!-- 步骤 1 在磁盘上创建单个 4999mb 分区 -->
<task description="partition the disk">
<command>/bmonitor/bmpart.exe</command>
<parameters>
<parameter>\device\harddisk0</parameter> <!-- 选择 harddisk0 -->
<parameter>/init</parameter> <!-- 擦除 harddisk0 上的所有分区 -->
<parameter>/c:4999</parameter> <!-- 创建一个大小为 4999mb 的新分区(#1) -->
<parameter>/a</parameter>
<!-- 激活新创建的分区(#1) -->
</parameters>
</task>
在上面的部分(步骤 1)中,您需要定义磁盘的分区大小。在上面的示例中,一个大小为 4999mb 的分区将在驱动器 0 上创建。
<!-- step 2 download images -->
<task description="download image">
<command>/imaging/imgbmdeploy.exe</command>
<parameters>
<parameter>3718plain</parameter> <!-- 将映像命名为已部署的-->
<parameter>\device\harddisk0\partition1</parameter> <!-- 将映像部署到 partition1 -->
<parameter>-r</parameter> <!-- 指定部署模式 -->
<parameter>-client</parameter> <!-- 所需的参数 -->
</parameters>
</task>
在上面的部分(步骤 2)中,您需要指定您用来添加到控制器的映像。在上面的示例中,3718plain 用于映像。
<!-- 步骤 3 个性化 sysprep.inf 文件 -->
<task description="set sysprep custom info in the sysprep.inf file">
<command>/bmonitor/bmstrrep.exe</command>
<parameters>
<parameter>\device\harddisk0\partition1\sysprep\sysprep.inf</parameter>
<parameter>^productkey^</parameter> <!-- 键(要在 sysprep.inf 文件中搜索的 productkey)
<parameter>"$productkey$"</parameter> <!-- 要替换的值,一定要放在引号中>
<parameter>^oemduplicatorstring^</parameter>
<parameter>"$oemduplicatorstring$"</parameter>
<parameter>"$cluster_command_mount$"</parameter>
<parameter>^cluster_command^</parameter>
<parameter>"$cluster_command$"</parameter>
<parameter>^assigndriveletters^</parameter>
<parameter>"$assigndriveletters$"</parameter>
<parameter>^fileshare^</parameter>
<parameter>"$fileshare$"</parameter>
</parameters>
</task>
在上面的部分(步骤 3)中,您需要指定您在 sysprep.inf 中使用的变量名称。注意,变量包含在 ^xxx^ 中,而它所附带的要用于替换的值在引号($xxxx$)中。
用于部署单个节点集群的样本 xml 文件在附录 d 中。这个示范文件还将在磁盘上创建文件共享。
6. 创建序列文件的工作模板
ads 中的工作模板提供了一种方法,可以用来定义和存储您计划多次对一个设备(或一组设备)运行的任务说明。您可以使用 adsjobtemplate 命令行工具或 ads 插件来创建工作模板。您将需要把这个工作模板与您刚创建的用于部署操作系统和配置服务器集群的 xml 文件相关联。在创建了工作模板创建好之后,当您每次需要对任何设备运行工作时,您都可以使用它。例如,您可以使用带有创建开关的集群命令来首次创建单个节点集群。如果集群创建完毕,您就可以修改这个命令来将节点添加到下一个系统,它是您需要在操作系统部署之后加入这个集群的系统。
要使用 ads 的用户界面添加工作模板:打开 ads.msc
查看全尺寸图片。
右键单击“工作模板”并单击“添加”。这将调用“添加工作模板向导”来指导您完成整个过程。
7. 为所需的设备在 ads 数据库中创建和存储与变量相关的值
现在,您将需要在控制器数据库中为每个设备定义和存储变量。当对设备运行值时,这些值将用 sysprep.inf 文件中的值进行代替。您可以通过 ads 或命令行界面来定义变量。要通过 ads 插件添加,可以双击设备并在弹出的窗口中单击“用户”。单击“添加”来添加用在序列文件和 sysprep.inf 中的变量名,并且使其与某个值相关联。
查看全尺寸图片。
查看全尺寸图片。
单击“用户”,然后单击“添加”。
输入变量名,然后输入此变量的值,最后单击“确定”。
您还可以使用如下所示的命令行界面来将变量添加到控制器中的设备数据库。
adsdevice /edit device-name /setvar variable-name "value"
e.g.;
adsdevice /edit mnhp11n3 /setvar dnsserversearchorder2 "172.24.10.2,172.24.0.2"
mnhp11n3 是设备名称,dnsserversearchorder2 是变量。
您可以创建一个批处理脚本来为设备添加所有的变量。附录 g 包括一个样本批处理脚本文件,它定义了附录 d 中的 sysprep.inf 文件的变量的值。
8. 对所需的设备执行工作模板
下一步是对设备执行工作模板。要手工给设备分配工作模板,可以使用 ads 插件或 adscontroller 命令行工具。
一旦将设备连接到控制器,就可以右键单击该设备并单击“运行工作”。这将调用一个向导,该向导将带您完成选择要执行的正确工作模板的步骤。
一旦执行启动,您就可以通过单击 ads 插件的左边窗格中的“运行工作”选项来监控工作进程。它会列出所有在序列 xml 文件中已经定义的任务。在集群创建完成之后,您可能需要根据您的要求来配置集群。您可以使用任何脚本来在 sysprep.inf 文件的 [guirunonce] 部分配置集群。
在经过少量的修改之后,您就可以将相同的序列文件 sysprep.inf 用于安装和配置第二个节点。您将需要修改为第二个节点(设备)的变量定义的值。例如,用于将节点添加到这个集群的集群命令、该节点的 ip 地址等等。
附录 a
这是一个简单的 sysprep.inf 文件,它可以应用于服务器集群的无人值守安装。通过使用这个配置文件,mini-setup 将创建一个名为 sv-cluster 的集群,它带有一个节点 sv-node1,另外,mini-setup 还将给共享存储驱动器分配驱动器字母,并且创建一个名为 svfileshare 的集群文件共享。
在您使用这个文件之前,需要将计算机名称、集群名称、用户数据、密码和 ip 地址替换成实际的。
[unattended]
oemskipeula = yes
[guiunattended]
autologon = yes
adminpassword = ***
advservertype = servernt
oemskipwelcome = 1
oemskipregional = 1
timezone = 20
[licensefileprintdata]
automode=perseat
[userdata]
computername = sv-node1
fullname = "user"
orgname = "organization"
productkey = 11111-22222-33333-44444-55555
.networking]
[identification]
domainadmin = domain\user
domainadminpassword = *****
joindomain = domain
;将可以使用两个网络适配器——adapter01 和 adapter02。
.netadapters]
adapter01 = params.adapter01
adapter02 = params.adapter02
;指定第一个网络适配器所用的网卡。
[params.adapter01]
.netcardaddress = 0x0002a5d0510f
;指定第二个网络适配器所用的网卡。
[params.adapter02]
.netcardaddress = 0x000476d5f57d
;安装 ms 网络的客户端。
.netclients]
ms_msclient = params.ms_msclient
[params.ms_msclient]
;只安装 tcp。
.netprotocols]
ms_tcpip = params.ms_tcpip
[params.ms_tcpip]
;tcp/ip 属性
adaptersections = params.ms_tcpip.adapter01,params.ms_tcpip.adapter02
;adapter01 用于集群内通信。
[params.ms_tcpip.adapter01]
dhcp = no
ipaddress = 172.24.23.91
specificto = adapter01
su.netmask = 255.255.0.0
wins = no
;adapter02 代表公用网络。
[params.ms_tcpip.adapter02]
defaultgateway = 157.5.8.1
dhcp = no
ipaddress = 157.5.4.1
specificto = adapter02
su.netmask = 255.255.252.0
dnsserversearchorder = 157.5.0.1,157.6.0.2
wins = yes
winsserverlist = 157.5.0.1,157.5.1.2
[guirunonce]
;请参见本文档的第 2.2.1 节以获得 assigndriveletters.bat 文件的示范文本。
command0=%systemdrive%\scripts\assisgndriveletters.bat
command1 = "%windir%\system32\cluster.exe /cluster:sv-cluster /create /node:sv-node1 /user:domain\user /pass:***** /ipaddr: 157.5.5.50"
command2 = "%systemdrive%\clusterinstallfiles\createfs.vbs sv-cluster clustergroup svfileshareresource e:\ svfileshare"
附录 b
createfs.vbs —— 创建集群文件共享的 visual basic 脚本
const resourcetype = "file share"
const usagestring = "usage: createfs cluster group resourcename path sharename <remarks> <sharesubdirs>"
const basicargs = 3 ' 头三个参数将总是 cluster、group 和 resourcename
const minargs = 5 ' basicargs + path + sharename
const maxargs = 7 ' basicargs + path + sharename + <remarks> + <sharesubdirs>
'----------------------------------------------------------------------------
'定义我们将在 privargnamearray 中使用的专用属性
'并且定义 privargarray 中的缺省值
'----------------------------------------------------------------------------
privargnamearray = array( "path", "sharename", "remark", "sharesubdirs" )
privargarray = array( "", "", "", 1 )
'----------------------------------------------------------------------------
' 定义我们依赖的所有资源类型。我们将只
' 添加该数组(如果有的话)和
' 我们在我们的枚举中遇到的第一个数组中的每种类型的一个资源。当没有找到
' 某种类型的资源时,没有错误抛出。由用户负责检验每种资源是否
' 运作良好(例如,路径是指向我们所依赖的共享磁盘的)
'----------------------------------------------------------------------------
const numberofdeps = 3
dependencyarray = array( "physical disk", "ip address", ".network name" )
set oargs = wscript.arguments
if oargs.count < minargs or oargs.count > maxargs then
'----------------------------------------------------------------------------
'用法
'----------------------------------------------------------------------------
wscript.echo usagestring
else
'----------------------------------------------------------------------------
'解析参数
'----------------------------------------------------------------------------
oclustername = oargs(0)
ogroupname = oargs(1)
oresourcename = oargs(2)
for icounter = 0 to oargs.count - basicargs - 1
if true = isnumeric( oargs( icounter + basicargs )) then
privargarray(icounter) = clng(oargs(icounter + basicargs))
else
privargarray(icounter) = oargs(icounter + basicargs)
end if
next
'----------------------------------------------------------------------------
'打开集群
'----------------------------------------------------------------------------
set ocluster = createobject("mscluster.cluster")
ocluster.open (oclustername)
'----------------------------------------------------------------------------
'打开 resgroup 并添加新的资源
'----------------------------------------------------------------------------
set ogroup = ocluster.resourcegroups.item(ogroupname)
set onewresource = ogroup.resources.createitem(oresourcename, resourcetype, 0)
'----------------------------------------------------------------------------
'添加任何必需的依赖性
'----------------------------------------------------------------------------
set coldeps = onewresource.dependencies
for icounter = 0 to numberofdeps - 1
for each oresource in ogroup.resources
if oresource.type.name = dependencyarray(icounter) then
coldeps.additem oresource
exit for
end if
next
next
'----------------------------------------------------------------------------
'设置新资源的专用属性
'----------------------------------------------------------------------------
set colproperties = onewresource.privateproperties
for icounter = 0 to maxargs - basicargs - 1
colproperties.item(privargnamearray(icounter)).value = privargarray(icounter)
next
colproperties.savechanges
'----------------------------------------------------------------------------
'清除
'----------------------------------------------------------------------------
set ocluster = nothing
set ogroup = nothing
set oresourcename = nothing
set icounter = nothing
set onewresource = nothing
set colproperties = nothing
set coldeps = nothing
end if
'----------------------------------------------------------------------------
'清除
'----------------------------------------------------------------------------
set oargs = nothing
set privargarray = nothing
set privargnamearray = nothing
set dependencyarray = nothing
附录 c
这是一个样本批处理文件,可以创建文件共享资源(使用 cluster.exe)。我们假定有一组已经包含了网络名称.network name)、物理磁盘(physical disk)资源。下面,您将看到对每一行的解释。下面的示例假定您一个名为“disk group 1”的组,带有“disk x:”。
creatfs.bat
x:
md clusterfs
cluster. res "clusterfs" /create /group:"disk group 1" /type:"file share"
cluster . res "clusterfs" /priv path="x:\clusterfs"
cluster . res "clusterfs" /priv sharename=clusfileshare
cluster . res "clusterfs" /priv remark="this is a file share"
cluster . res "clusterfs" /prop description="this is a clustered share"
cluster . res "clusterfs" /priv security=domain\user,grant,c:security
cluster . res "clusterfs" /priv sharesubdirs=1
cluster . res "clusterfs" /adddep:"disk x:"
cluster . res "clusterfs" /adddep:".network name"
cluster . res "clusterfs" /on
以下是每一行所代表的含义:
cluster . res "clusterfs" /create /group:"disk group 1" /type:"file share"
这会在名为“disk group 1”的集群组中创建文件共享资源。注意:默认集群组内外都不应有任何内容。
cluster . res "clusterfs" /priv path="x:\clusterfs"
这会将到文件共享的本地路径设置为 x:\clusterfs。请验证该路径存在并且是可访问的。
cluster . res "clusterfs" /priv sharename=clusfileshare
这会设置资源的共享名称,也是客户端将用来连接的名称。
cluster . res "clusterfs" /priv remark="this is a file share"
这会设置文件共享的备注。客户端在浏览虚拟服务器时将看到此备注。
cluster . res "clusterfs" /prop description="this is a clustered share"
这会在集群管理员中提供对资源的描述。此名称只能在 cluadmin 中作为标识之用。
cluster . res "clusterfs" /priv security=domain\user,grant,c:security
这会给域“domain”中的用户帐号“user”提供更改文件共享资源的共享级别的权限。
访问类型有授予(grant)、拒绝(deny)、设置(set)或撤销(revoke)。选择授予、拒绝、设置类型时,需要有访问掩码。访问掩码有“r”(代表读取)、“c”(代表更改)和“f”(代表完整)。
这还可以用来同时授予多个用户权限,下面是安全性开关参数的语法:
security=domain\user1,grant,rc,domain\user2,revoke,everyone,set,f:security
cluster . res "clusterfs" /priv sharesubdirs=1
这会将文件共享设置为动态(可理解为“共享所有的子目录”)。如果您创建的是标准文件共享,则必须省略此行。
cluster . res "clusterfs" /adddep:"disk x:"
这会使文件共享资源依赖于文件共享所驻留的磁盘 x:\ 的物理磁盘资源。
cluster . res "clusterfs" /adddep:".network name"
这会使文件共享资源依赖于网络名称资源。网络名称资源必须是已经存在的。
cluster . res "clusterfs" /on
这会使新创建的文件共享资源联机。
附录 d
这是一个样本 ads 序列文件,可以用于安装服务器集群。通过使用这个序列文件以及附录 f 中的 [sysprep.inf],mini-setup 将创建一个名为 mnhp11 集群,它带有一个节点 mnhp11n3,另外,mini-setup 还将给共享存储驱动器分配驱动器字母(将使用附录 c 中的 creatfs.bat),并且创建名为 svfileshare 的集群文件共享(将使用附录 b 中的 createfs.vbs)。 下面的文件的 <!-- 步骤 3 个性化 sysprep.inf 文件 --> 部分的所有变量($xxxx$ 之间的任何变量,比如产品键、域名、计算机名等等)都需要按照附录 g 中的描述进行定义。此外,在您可以使用这个文件之前,需要定义真实的名称以替换附录 g 中的集群名称、用户数据、密码和 ip 地址。
文件名:[da-deploy-image-form-servercluster.xml]
<?xml version="1.0" encoding="utf-8"?>
<!--
这个文件是 microsoft ads 样本的一部分。microsoft corporation 版权所有。保留所有权利。用于确定设备用途的样本序列目前正在运行部署代理,并且将其配置为把它连接到一个域。要预置的映像必须使用 sysprep.inf 进行捕获,它包含字符串 ^ads_windows_product_key^ 、 ^domainadminpassword^ 等等,与下面的个性化步骤中的一样。必须为与下面的个性化步骤中的一样的设备创建设备变量。要使用这个序列:将目标引导到部署代理中,然后对设备运行这个序列。
-->
<!-- start sequence -->
<sequence command="da-deploy-image-form-servercluster.xml" description="deploy an image and configure the machine to join domain and form a cluster"
xmlns="http://schemas.microsoft.com/ads/2003/sequence" version="1">
<!-- 步骤 1 在磁盘上创建单个 4999mb 分区 -->
<task description="partition the disk">
<command>/bmonitor/bmpart.exe</command>
<parameters>
<parameter>\device\harddisk0\partition0</parameter>
<parameter>/init</parameter>
<parameter>/c:4999</parameter>
<parameter>/a</parameter>
</parameters>
</task>
<!-- 步骤 2 下载映像 -->
<task description="download image">
<command>/imaging/imgbmdeploy.exe</command>
<parameters>
<parameter>3718plain</parameter>
<parameter>\device\harddisk0\partition1</parameter>
<parameter>-r</parameter>
<parameter>-client</parameter>
</parameters>
</task>
<!-- 步骤 3 个性化 sysprep.inf 文件 -->
<task description="set sysprep custom info in the sysprep.inf file">
<command>/bmonitor/bmstrrep.exe</command>
<parameters>
<parameter>\device\harddisk0\partition1\sysprep\sysprep.inf</parameter>
<parameter>^productkey^</parameter>
<parameter>"$productkey$"</parameter>
<parameter>^oemduplicatorstring^</parameter>
<parameter>"$oemduplicatorstring$"</parameter>
<parameter>^fullname^</parameter>
<parameter>"$fullname$"</parameter>
<parameter>^orgname^</parameter>
<parameter>"$orgname$"</parameter>
<parameter>^domainadmin^</parameter>
<parameter>"$domainadmin$"</parameter>
<parameter>^domainadminpassword^</parameter>
<parameter>"$domainadminpassword$"</parameter>
<parameter>^domainname^</parameter>
<parameter>"$domainname$"</parameter>
<parameter>^system_admin_password^</parameter>
<parameter>"$system_admin_password$"</parameter>
<parameter>^computer_name^</parameter>
<parameter>"$device.system.name$"</parameter>
<parameter>^connectionname1^</parameter>
<parameter>"$connectionname1$"</parameter>
<parameter>.netcardaddress1^</parameter>
<parameter>"$.netcardaddress1$"</parameter>
<parameter>^dhcp1^</parameter>
<parameter>"$dhcp1$"</parameter>
<parameter>^ipaddress1^</parameter>
<parameter>"$ipaddress1$"</parameter>
<parameter>^su.netmask1^</parameter>
<parameter>"$su.netmask1$"</parameter>
<parameter>^wins1^</parameter>
<parameter>"$wins1$"</parameter>
<parameter>^connectionname2^</parameter>
<parameter>"$connectionname2$"</parameter>
<parameter>.netcardaddress2^</parameter>
<parameter>"$.netcardaddress2$"</parameter>
<parameter>^dhcp2^</parameter>
<parameter>"$dhcp2$"</parameter>
<parameter>^ipaddress2^</parameter>
<parameter>"$ipaddress2$"</parameter>
<parameter>^su.netmask2^</parameter>
<parameter>"$su.netmask2$"</parameter>
<parameter>^defaultgateway2^</parameter>
<parameter>"$defaultgateway2$"</parameter>
<parameter>^dnsserversearchorder2^</parameter>
<parameter>"$dnsserversearchorder2$"</parameter>
<parameter>^winsserverlist2^</parameter>
<parameter>"$winsserverlist2$"</parameter>
<parameter>^wins2^</parameter>
<parameter>"$wins2$"</parameter>
<parameter>^cluster_command_mount^</parameter>
<parameter>"$cluster_command_mount$"</parameter>
<parameter>^cluster_command^</parameter>
<parameter>"$cluster_command$"</parameter>
<!-- <parameter>^assigndriveletters^</parameter> -->
<!-- <parameter>"$assigndriveletters$"</parameter> -->
<!-- <parameter>^fileshare^</parameter> -->
<!-- <parameter>"$fileshare$"</parameter> -->
</parameters>
</task>
<!-- 步骤 4 设置控制器 ip -->
<task description="set controller ip address">
<command>/bmonitor/bmsetreg.exe</command>
<parameters>
<parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter>
<parameter>controlset001\control\bmss</parameter>
<parameter>controlleripaddress</parameter>
<parameter>reg_multi_sz</parameter>
<parameter>$controller.system.adminipaddr$</parameter>
</parameters>
</task>
<!-- 步骤 5 设置 bmdp 端口号 -->
<task description="set bmdp port number">
<command>/bmonitor/bmsetreg.exe</command>
<parameters>
<parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter>
<parameter>controlset001\control\bmss</parameter>
<parameter>bmdpipport</parameter>
<parameter>reg_dword</parameter>
<parameter>$controller.system.bmdpport$</parameter>
</parameters>
</task>
<!-- 步骤 6 设置 bmcp 端口号 -->
<task description="set bmcp port number">
<command>/bmonitor/bmsetreg.exe</command>
<parameters>
<parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter>
<parameter>controlset001\control\bmss</parameter>
<parameter>bmcpipport</parameter>
<parameter>reg_dword</parameter>
<parameter>$controller.system.bmcpport$</parameter>
</parameters>
</task>
<!-- 步骤 7 设置管理 mac 地址 -->
<task description="set management mac address">
<command>/bmonitor/bmsetreg.exe</command>
<parameters>
<parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter>
<parameter>controlset001\control\bmss</parameter>
<parameter>bindexcept</parameter>
<parameter>reg_multi_sz</parameter>
<parameter>$controller.system.adminmac$</parameter>
</parameters>
</task>
<!-- 步骤 8 将公钥复制到目标 -->
<task description="copy public key certificate file to target">
<command>/bmonitor/bmfilexfer.exe</command>
<parameters>
<parameter>-d</parameter>
<parameter>"c:\program files\microsoft ads\certificate\adsroot.cer"</parameter>
<parameter>\device\harddisk0\partition1\windows\temp\adsroot.cer</parameter>
</parameters>
</task>
<!-- 步骤 9 设置 bmss 公钥认证 -->
<task description="set the bmss public key certificate">
<command>/bmonitor/bmsetreg.exe</command>
<parameters>
<parameter>-h:\device\harddisk0\partition1\windows\system32\config\system</parameter>
<parameter>-f</parameter>
<parameter>-r</parameter>
<parameter>controlset001\control\bmss\bmcpcertificates</parameter>
<parameter>agentcert</parameter>
<parameter>reg_binary</parameter>
<parameter>\device\harddisk0\partition1\windows\temp\adsroot.cer</parameter>
</parameters>
</task>
<!-- 步骤 10 重启机器 -->
<task doesreboot="true" timeout= "600" description="reboot">
<command>/bmonitor/reboot</command>
</task>
<!-- 步骤 11 当 pxe 请求传入时,引导硬盘(启动 mini-setup) -->
<task doesreboot="true" timeout= "600" description="boot to hard disk">
<command>/pxe/boot-hd</command>
</task>
<!-- 步骤 12 在 mini-setup 的最后,机器将重启,因此,当 pxe 请求传入时,引导硬盘(启动新安装的操作系统)
-->
<task timeout= "600" description="boot to hard disk">
<command>/pxe/boot-hd</command>
</task>
<!-- 步骤 13 将设备记录更新为以后始终引导硬盘 -->
<!-- 如果已经将 ads 安装到不同于“c:\program files\microsoft ads”的文件夹,则需要 -->
<!-- 更新 ads 安装文件夹 -->
<task description="set default job template as boot to hard disk">
<command target="controller">c:\program files\microsoft ads\tools\adsdevice.wsf</command>
<parameters>
<parameter>-e</parameter>
<parameter>$device.system.name$</parameter>
<parameter>-jobtemplate</parameter>
<parameter>boot-to-hd</parameter>
</parameters>
</task>
</sequence>
附录 e
[boot-to-hd.xml]
<?xml version="1.0" encoding="utf-8"?>
<!--
这个文件是 microsoft ads 样本的一部分。microsoft corporation 版权所有。保留所有权利。在工作模板中使用这个文件会导致设备启动,请退出 pxe,然后在下一次 pxe 启动时从下一个启动设备(通常为硬盘)中启动。
-->
<!-- 启动序列 -->
<sequence command="boot-to-hd.xml" description="pxe boot into hard disk"
version="1"
xmlns="http://schemas.microsoft.com/ads/2003/sequence">
<!-- 步骤 1 引导硬盘 -->
<task description="boot to hard disk">
<command>/pxe/boot-hd</command>
</task>
</sequence>
附录 f
下面是 sysprep.inf 文件,可以用于安装服务器集群(使用 ads)。您可以使用附录 d 和 e 中定义的工作序列以及附录 g 中定义的变量。注意:您必须修改这些变量以满足您自己的需要。
[sysprep.inf]
;setupmgrtag
[unattended]
oemskipeula=yes
installfilespath=c:\sysprep\i386
targetpath=\windows
[guiunattended]
adminpassword="^system_admin_password^"
encryptedadminpassword=no
oemskipregional=1
oemduplicatorstring="^oemduplicatorstring^"
timezone=4
oemskipwelcome=1
autologon=yes
autologoncount=1
[userdata]
fullname="^fullname^"
orgname="^orgname^"
computername="^computer_name^"
productkey="^productkey^"
[licensefileprintdata]
automode=perseat
[identification]
domainadmin="^domainadmin^"
domainadminpassword="^domainadminpassword^"
joindomain="^domainname^"
.networking]
; installdefaultcomponents=yes
;将可以使用两个网卡——adapte401 和 adapetr02
.netadapters]
adapter01=params.adapter01
adapter02=params.adapter02
;指定网络适配器 #1 所用的网卡
[params.adapter01]
connectionname="^connectionname1^"
.netcardaddress=".netcardaddress1^"
;指定网络适配器 #2 所用的网卡
[params.adapter02]
connectionname="^connectionname2^"
.netcardaddress=".netcardaddress2^"
;安装 ms 网络的客户端
.netclients]
ms_msclient=params.ms_msclient
[params.ms_msclient]
;只有 tcpip
.netprotocols]
ms_tcpip=params.ms_tcpip
[params.ms_tcpip]
;tcpip 属性
adaptersections=params.ms_tcpip.adapter01,params.ms_tcpip.adapter02
;adapter01 用于集群内通信
[params.ms_tcpip.adapter01]
dhcp="^dhcp1^"
ipaddress="^ipaddress1^"
specificto=adapter01
su.netmask="^su.netmask1^"
wins="^wins1^"
;adapter02 用于公用网络
[params.ms_tcpip.adapter02]
defaultgateway="^defaultgateway2^"
specificto=adapter02
dhcp="^dhcp2^"
ipaddress="^ipaddress2^"
su.netmask="^su.netmask2^"
dnsserversearchorder="^dnsserversearchorder2^"
wins="^wins2^"
winsserverlist="^winsserverlist2^"
[tapilocation]
countrycode=1
dialing=tone
areacode=425
[branding]
brandieusingunattended=yes
[proxy]
proxy_enable=0
use_same_proxy=0
[guirunonce]
;在形成/加入集群之前装上所有的磁盘卷
command0="^cluster_command_mount^"
command1=^assigndriveletters^
command2="^cluster_command^"
command3=^fileshare^
[sysprepcleanup]
附录 g
ads 需要用户使用 ads 插件输入这些变量。在执行集群安装的 xml 序列工作模板之前,用户需要为设备(将部署映像的系统)定义下面所有的变量。您还可以创建一个批处理文件来创建这些变量(使用下面列出的命令)。在运行序列模板之前执行批处理文件。
附带关联值的变量列表:oemduplicatorstring= fresh install of windows 2003 server with server cluster configured
productkey=xxxxx-yyyyy-xxxxx-yyyyy-xxxxx
fullname="wolfpack"
orgname="microsoft"
domainadmin=xx\yyyyyy
domainadminpassword=xxxxx
domainname=xx.com
system_admin_password=xxxxxx
connectionname1="private"
.netcardaddress1=0x00306e121879
dhcp1=no
ipaddress1=10.11.25.14
su.netmask1=255.255.0.0
wins1=no
connectionname2="public"
.netcardaddress2=0x00306e121878
defaultgateway2=172.24.11.1
dhcp2=no
ipaddress2=172.24.11.159
su.netmask2=255.255.255.0
dnsserversearchorder2=172.24.10.2,172.24.0.2
wins2=yes
winsserverlist2=157.55.254.201,157.55.254.203
cluster_command_mount= c:\windows\system32\mountvol /e
cluster_command=c:\windows\system32\cluster.exe /cluster:mnhp11 /create /node:mnhp11n3 /user:ct\wolfpack /pass:wolfpack /ipaddr:172.24.11.141
assigndriveletters=%systemdrive%\scripts\assisgndriveletters.bat
fileshare=%systemdrive%\scripts\createfs.bat batch file:
本批处理文件使用 adsdevice 命令创建变量。syntax
adsdevice edit devicename setvar variablename valueforvariable
[variables.bat]
adsdevice /edit mnhp11n3 /setvar oemduplicatorstring "fresh install of windows 2003 server with server cluster configured"
adsdevice /edit mnhp11n3 /setvar productkey "xxxxx-yyyyy-xxxxx-yyyyy-xxxxx
adsdevice /edit mnhp11n3 /setvar fullname "wolfpack"
adsdevice /edit mnhp11n3 /setvar orgname "microsoft"
adsdevice /edit mnhp11n3 /setvar domainadmin "y\xxxxx"
adsdevice /edit mnhp11n3 /setvar domainadminpassword "xxxxx"
adsdevice /edit mnhp11n3 /setvar domainname "xx.com"
adsdevice /edit mnhp11n3 /setvar system_admin_password "xxxxxx"
adsdevice /edit mnhp11n3 /setvar connectionname1 "private"
adsdevice /edit mnhp11n3 /setvar.netcardaddress1 "0x00306e121879"
adsdevice /edit mnhp11n3 /setvar dhcp1 "no"
adsdevice /edit mnhp11n3 /setvar ipaddress1 "10.11.26.11"
adsdevice /edit mnhp11n3 /setvar su.netmask1 "255.255.0.0"
adsdevice /edit mnhp11n3 /setvar wins1 "no"
adsdevice /edit mnhp11n3 /setvar connectionname2 "public"
adsdevice /edit mnhp11n3 /setvar.netcardaddress2 "0x00306e121878"
adsdevice /edit mnhp11n3 /setvar defaultgateway2 "172.24.11.1"
adsdevice /edit mnhp11n3 /setvar dhcp2 "no"
adsdevice /edit mnhp11n3 /setvar ipaddress2 "172.24.11.205"
adsdevice /edit mnhp11n3 /setvar su.netmask2 "255.255.255.0"
adsdevice /edit mnhp11n3 /setvar dnsserversearchorder2 "172.24.10.2,172.24.0.2"
adsdevice /edit mnhp11n3 /setvar wins2 "yes"
adsdevice /edit mnhp11n3 /setvar winsserverlist2 "157.55.254.201,157.55.254.203"
adsdevice /edit mnhp11n3 /setvar cluster_command_mount "c:\windows\system32\mountvol /e"
adsdevice /edit mnhp11n3 /setvar cluster_command "c:\windows\system32\cluster.exe /cluster:mnhp11 /create /node:mnhp11n3 /user:ct\wolfpack /pass:wolfpack /ipaddr:172.24.11.141"
rem ;请参见本文档的第 2.2.1 节以获得 assigndriveletters.bat 文件的样本文本
adsdevice /edit mnhp11n3 /setvar assigndriveletters "%systemdrive%\scripts\assisgndriveletters.bat"
rem ;请参见“配置集群”部分和附录 b 以获得 createfs.vbs
adsdevice /edit mnhp11n3 /setvar fileshare "%systemdrive%\scripts\createfs.bat"
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器