个人认为对于使用SCCM 2012的最重要的经验是耐心。
SCCM采用分布式部署的架构,不同的站点角色可以部署在不同的服务器上,站点角色之间的通信通常是异步的且需要消耗较多时间,加之SCCM的通知机制不如SCVMM那样强大,因而通过GUI界面我们很难实时了解诸如内容分发(Distribute Content),部署任务序列(Deploy)这些工作的执行状态,这不得不说是SCCM的重大缺陷,而这点在操作系统分发上将体现的更加明显。
虽然缺少实时的通知机制,但是我们还是可以通过SCCM的各种日志发现一些问题,分析其原因并解决它。有时都做对了却无法得到正确的结果,这时就要考虑角色间通讯延迟的问题,可能这时需要的只是等待了。接下来以操作系统分发为例来说明SCCM的一些功能和可能会遇到问题的解决办法。
四、SCCM 2012 R2的实战——操作系统分发
SCCM可以向具有通过网络启动功能的计算机分发操作系统,这非常适合大规模部署Windows操作系统的场景,甚至实现服务器裸机上架。
操作系统分发可以简单的理解为目标计算机安装操作系统,并进行一些必要的配置。在SCCM中操作系统分发即是在目标计算机上执行一个自定义任务序列。根据一般安装操作系统的经验可以想象这个自定义任务序列需要:格式化磁盘、安装操作系统、配置操作系统(设置账号、选择时区、输入产品密钥等),如果进一步还可能需要:安装驱动、安装软件、配置网络,加入域甚至需要一些更复杂的配置。由于SCCM通过网络部署操作系统,因而在上面的任务之前,还需要让目标计算机载入Window PE以搭建自定义任务能够执行的环境,当目标计算机通过Window PE成功引导后,剩下的工作在Windows环境中执行就显得简单得多。通过上面,现在我们知道,我们需要做的工作包括:
- 准备Window PE映像并分发至分发点,用以引导目标计算机
- 准备操作系统映像并分发至分发点,用以在目标计算机上进行部署
- 准备驱动包或应用程序包并分发至分发点(非必须)
- 准备任务序列并部署
- 启动目标计算机通过PXE引导系统
当然在进行以上工作之前,我们应当搭建起整个部署所需要的网络环境(实现目标计算机与SCCM服务器之间的联网,确认目标计算机支持网络PXE启动,另外在准备安装SCCM的前置条件中我们还谈到在网络中安装和配置DHCP Server和Windows Deploy Servies (WDS)服务器角色等)。一切准备停当,那么接下来的工作就交由SCCM来完成了:
1. SCCM的初始配置(Administration菜单和Asses and Compliance菜单)
在这里我们需要配置网络发现方法、站点边界和站点角色,并对分发点进行一些必要配置,以支持操作系统分发功能。
在Administration > Hierarchy Configuration > Discovery Methods子菜单中,开启以下发现方法。
SCCM通过多种发现方法自行找到目标计算机并纳入管理,经过一段时间的等待,目标计算机会出现在Asses and Compliance > Devices菜单中,并自动进行简单分组。
在Administration > Boundary Groups 子菜单中新建一个站点边界组,在Administration > Boundaries子菜单中新建站点边界 ,这好比为站点服务器划分势力范围。
在Administration > Site Configuration > Sites上方的菜单中,选择Configure Site Components > Software Distribution,配置Network Access Account选项卡,配置一个账号共Configuration Manager的客户端访问网络。
在Administration > Site Configuration > Servers and Site System Roles确认各站点角色的部署情况,至少需要一个分发点角色。
在Administration > Distribution Points中选择分发点右键属性,开启PXE和多播(Multicast),配置Boundary Groups
SCCM可以通过PXE和多播(Multicast)方式进行操作系统分发。PXE是一对一方式,只要有目标计算机就发起连接就进行数据传输,多个目标计算机连接的情况下将同时发送多份数据;而多播是一对多的方式,只有达到足够多数量的目标计算机或等待限定时间后,才通过多播的方式发送一份数据,因而多播是高效的,另外如果已经开始了多播传输,这时又加入的新的目标计算机,那么该目标计算机会先接收和其他目标计算机一样的数据,缺失的部分随后再补充,这可以通过查看他们的进度看到。
为分发点开启PXE,以下设置的密码将在目标计算机PXE启动时用到:
为分发点开启多播(Multicast),在Enable scheduled multicast中设置目标计算机数量限制和时间限制:
为分发点配置站点边界组:
上面的工作准备就绪,接下来我们进入正题。可以看到在Software Library菜单中有三个子菜单,分别对应SCCM的三个主要功能,操作系统分发功能主要涉及Software Library > Operating Systems子菜单。
2. 准备Window PE映像并分发至分发点(Software Library菜单)
默认情况下,SCCM会提供两个Window PE映像(Boot Images),分别用以引导32位和64位系统,在这里我们需要对这些Window PE映像进行简单配置,并分发至分发点,以备发送并引导启动目标计算机进入PE环境,这里的分发(Distribute Content)可以简单认为是装车准备出发的意思。当然这些Window PE映像是经过特殊加工,且针对待分发的不同版本的操作系统要相匹配,但2012 R2中提供的这两个默认版本基本可以满足我们的需求,更多关于Window PE映像和待分发操作系统之间的关系,可以查阅微软的文档。下面我们以64位环境为例:
在Boot Image (x64)右键属性,配置Customization勾选Enable command support(testing only),该选项开启了命令行的支持;配置Data Source勾选Deploy this boot image from the PXE-enabled distribution point。接下来将Boot Image (x64)这个Window PE映像分发至分发点。
3. 准备操作系统映像并分发至分发点(Software Library菜单)
为了分发某个版本操作系统,我们需要事先在一台目标计算机手动安装配置好该版本操作系统,将其制作成为操作系统映像,然后将操作系统映像加入SCCM后,再分发给其他更多目标计算机。
制作操作系统映像本质上是使用Sysprep命令,但是SCCM也为我们提供了快捷途径,可以通过任务序列媒体功能创建一个任务序列媒体(可以认为是放在光盘或U盘中的小程序)在作为模板的目标计算机上运行就可以创建出操作系统映像了。那么接下来我们来看看如何创建这个任务序列媒体。
3.1. 创建捕获操作系统映像的任务序列媒体(U盘小程序)
在安装SCCM控制台的服务器中插入U盘,选择Software Library > Operating Systems > Task Sequences 右键 Create Task Sequence Media,选择Capture media
接下来选择U盘,选择启动映像和分发点(这与后面创建分发操作系统的任务序列的配置要一致),完成后即可使用该U盘进行操作系统映像的捕获了
3.2. 捕获操作系统映像
正常启动作为模板的目标计算机进入Windows系统,插入U盘运行其中名为TSMBAutorun.exe的程序,打开操作系统映像捕获向导,选择一个远程放置操作系统映像文件的网络位置。完成向导后目标计算机将重新启动并进入PE,开始操作系统的捕获。
成功完成后可以在那个网络位置发现一个.wim的Windows映像文件。
3.3. 创建系统映像并分发至分发点
在SCCM控制台中,选择Software Library > Operating Systems > Operating System Images 右键Add Operating System Image ,选择上一步创建的.wim文件。
创建完成后在Software Library > Operating Systems > Operating System Images 列表中可见上面创建的操作系统映像,右键配置Distribution Settings勾选Allow this package to be transferred via multicast(WinPE only)
接下来将该映像分发至分发点,如果向导中无法选择分发点,可能是该映像已经分发过了,如果随后又修改了属性,使用Update Distribution Points更新即可。
4. 准备驱动包或应用程序包并分发至分发点(非必须)
如果需要操作系统分发同时完成驱动和软件的安装,则可以分别在Software Library > Operating Systems > Driver Packages和Software Library > Application Management > Packages中创建驱动包和软件包,以备下一步创建任务序列中引用。这里不是操作系统分发的关键,在此略去。
5. 准备任务序列并部署
通过之前的描述我们已经知道,任务序列是整合上面准备的所有资源的关键环节。值得注意的是创建的任务序列是通过部署(Deploy)而不是分发(Distribute)的方式,只有作为内容,诸如PE映像、操作系统映像、驱动包,软件包才是分发出去的。
选择Software Library > Operating Systems > Task Sequences 右键 Create Task Sequence。这四个选项分别创建不同的默认任务序列,但随时可以增删改其中的任务:
- 部署操作系统映像到目标计算机上
- 部署操作系统映像后再以此制作新的映像
- 部署操作系统映像到虚拟磁盘中
- 完全自定义任务序列
选择Install an existing image package
选择一个用以引导启动目标计算机的Windows PE映像
选择之前准备好的操作系统映像文件(注意:Windows映像文件可以包含多个分区),设置产品密钥和管理员密码。
可以选择加入工作组或域
选择默认的Configuration Mananger Client Package
跳过State Migration、Include Updates和Install Application步骤,这些涉及状态迁移站点角色和软件分发的内容,暂不讨论。
完成创建任务序列后,通过右键编辑刚刚创建完成的任务序列,可见任务序列包含的所有任务与我们一般情况下进行操作系统安装的步骤无异。这里可以对任务进行调整,甚至可以设定任务执行的前提条件。
值得注意的是,对磁盘进行分区时需要明确目标计算机的启动引导方式是BIOS还是UEFI,在设定分区时,各分区容量之和不能超过目标计算机的实际的磁盘容量。
在应用操作系统时,由于wim映像文件中可以包含多个分区映像,需要明确选择其中作为操作系统分区的那个映像(即1-1),以及明确应用操作系统的磁盘位置(即将系统安装在之前划分好的哪个分区里),如下图是通过变量的方式确定的,Varialbe name:C 在分区时可以设定。
接下来部署(Deploy)该任务序列
在部署向导中为Collection选择All Unknown Computers,由于我们是向裸机部署,因而这些计算机还没有安装任何SCCM客户端软件,所以是Unknown Computers
接下来Purpose选择Available,可用但非必须。Make available to the following,确保选择一个包含PXE的选项,否则目标计算机将无法通过PXE启动。
其他接下来的选项可以默认并完成任务序列的部署,完成后在该任务序列下方的Deployments可以查看并操作部署的结果。如果对任务序列进行了修改,需要删除之前的部署,再重新部署。
也可以查看与该任务序列相关的内容分发情况,确保Targeted字段都为1,即代表已分发至分发点。
内容的分发和部署的状态可以通过Monitoring > Distribution Status 和 Monitoring > Deployments 查看。
6. 启动目标计算机通过PXE引导系统
启动目标计算机通过PXE引导系统。
引导成功后将载入PE映像
进入PE环境,输入之前设定的密码
选择任务序列并执行
如果一切正常,经过几次重启将最终完成操作系统的部署。如果遇到错误,可以通过错误报告和几个重要日志来分析原因。
SCCM提供了一个查看器日志的工具Configuration Manager Trace Log Tool,在SCCM默认安装路径中C:\Program Files\Microsoft System Center 2012 R2\Configuration Manager\tools\cmtrace.exe可以找到。
SCCM的日志文件在默认安装路径下C:\Program Files\Microsoft System Center 2012 R2\Configuration Manager\Logs。在操作系统分发过程中,主要可以查看SMSPXE.log和SMSProv.log文件。在目标计算机上也会产生日志文件Smsts.log文件,其在目标计算机上的位置随任务序列执行的不同阶段而不同,具体可查阅SCCM: How to copy SMSTS.log when a Task Sequence fails。