個人認為對於使用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。