Развертывание сервис-паков и заплат
🕛 13.04.2009, 19:31
Microsoft также выпускает сервис-паки (service packs) и заплаты (hotfixes). Их необходимо тщательно проверять перед установкой в рабочей среде, поскольку сервис-паки содержат очень большое число изменений, и кроме того, есть тестовые заплаты, поддержка которых со стороны Microsoft ограничена.Использование групповых политик для развертывания пакетов обновлений
Выяснив, что сервис-пак вам подходит, вам необходимо установить его на терминальных серверах. Начиная с Win2K, Microsoft стала выпускать сервис-паки в виде пакетов MSI, чтобы вы могли назначать их с помощью групповых политик. Это экономит время по сравнению с ручной установкой на каждом сервере.
Файл UPDATE.MSI должен использоваться только для развертывания сервис-паков с помощью групповых политик. Никогда не устанавливайте сервис-пак вручную, используя файл MSI - вместо этого используйте файл UPDATE.EXE.
Вы назначаете сервис-пак компьютеру таким же способом, как любой другой компонент программного обеспечения компьютера. Начните с распаковки файлов сервис-пака в сетевую папку, доступную для всех терминальных серверов. Для распаковки запустите исполняемый файл с ключом -X (например, WS2K3SP1.EXE -X). Затем укажите папку, в которую будут распакованы файлы.
Затем, используя Group Policy Management Console измените GPO и назначьте сервис-пак компьютерам. Раскройте Computer Configuration, Software Settings, Software installation. Щелкните правой кнопкой на этом узле, выберите New, Package. Вам предложат указать пакет MSI. Введите путь UNC к файлу UPDATE.MSI в папке, в которой вы распаковали файлы, и щелкните Open.
Вам будет предложено назначить пакет с опциями по умолчанию или открыть окно расширенных настроек. Вы можете выбрать Assigned и щелкнуть OK - для сервис-паков расширеных настроек нет.
При следующей перезагрузке сервера, получившего GPO, сервис-пак будет установлен.
Microsoft всегда выпускает сервис-паки, включающие в себя обновления, содержавшиеся в предыдущих сервис-паках. Поэтому при установке нового сервера вам нужно установить только один сервис-пак. Когда вы готовы установить новый сервис-пак, вам необходимо удалить назначения GPO для предыдущих сервис-паков, чтобы оба сервис-пака не устанавливались на новую машину.
Вам не следует деинсталлировать предыдущие сервис-паки перед установкой нового. Просто удалите назначение.
Для удаления назначения предыдущих сервис-паков, используйте Group Policy Management Console для редактирования GPO, испльзованной для назначения. Щелкните правой кнопкой на пакете и выберите All Tasks, Remove. В появившемся диалоге выберите вторую опцию, предотвращение новых инсталляций.
После того, как вы удалили назначение старого сервис-пака, вы можете создать назначение нового. При следующей перезагрузке серверы получат последний сервис-пак.
Развертывание заплат
Windows Automatic Updates и SUS заботятся только о критических обновлениях и обновлениях безопасности. Если вы решили, что вам необходимы другие, некритические обновления, вам необходим способ установить их на ваши серверы.
Для новых серверов наилучшим способом будет интеграция заплат в процесс создания сервера. Если вы используете клонирование или образы RIS, эта задача может быть решена либо ручной установкой фиксов до запуска Sysprep или Ripprep. Если вы создаете серверы с автоматической (unattended) инсталляцией, вы можете добавить их с помощью файла CMDLINES.TXT.
Подробнее об интеграции заплат в автоматическую инсталляцию Windows, см. статью Hotfix Installation and Deployment Guide
Однако, Microsoft не предоставляет ясного способа развернуть заплаты на нескольких существующих серверах. Руководство предлагает единственный способ - инсталляция с сетевого ресурса. Этот процесс подходит для небольших сред, но для крупных ферм вам наверняка захочется его автоматизировать. Следующие предлагаемые способы будут работать не во всех случаях и не являются исчерпывающим списом. Выберите тот способ, который лучше всего подходит для вас.
Использование файла ZAP
Если вам одновременно нужно установить только одну заплату, хорошим выбором будет использование файла ZAP. Файлы ZAP используются для установки программ, оличных от пакетов MSI, с помощью групповых политик. Файлы ZAP - это обычные текстовые файлы, содержащие информацию, необходимую для инсталляции приложения. Пример такого файла:
[Application]
; Only FriendlyName and SetupCommand are required,
; everything else is optional.
; FriendlyName is the name of the program that
; will appear in the software installation snap-in
; and the Add/Remove Programs tool.
; REQUIRED
FriendlyName = "Hotfix Q911001"
; SetupCommand is the command line used to
; Run the program's Setup. If it is a relative
; path, it is assumed to be relative to the
; location of the .zap file.
; Long file name paths need to be quoted. For example:
; SetupCommand = "long folder\setup.exe" /unattend
; or
; SetupCommand = "\\server\share\long _
; folder\setup.exe" /unattend
; REQUIRED
SetupCommand = “Q######_WS2K3_SP1_x86_en.exe” /M
; Version of the program that will appear
; in the software installation snap-in and the
; Add/Remove Programs tool.
; OPTIONAL
DisplayVersion = 1.0
; Version of the program that will appear
; in the software installation snap-in and the
; Add/Remove Programs tool.
; OPTIONAL
Publisher = Microsoft
Основной недостаток при использовании файлов ZAP для установки заплат состоит в том, что после установки требуется перезагрузка сервера. Поэтому этот метод не подходит для установки нескольких заплат.
Аргументы командной строки для всех инсталляторов заплат от Microsoft следующие:
/F Принудительное закрытие всех открытых приложений при перезагрузке компьютера заплатой
/N Не делать резервные копии для последующего удаления заплаты
/Z Не перезагружать компьютер по завершении инсталляции
/Q Тихий режим - вмешательства пользователя не требуется
/M Использовать режим автоматической инсталляции
/L Выдать список установленных заплат
Использование скрипта остановки
Поскольку большинство заплат требуют перезагрузки, для их инстлляции можно использовать скрипт остановки (shutdown). Вы не хотите инсталлировать заплату при каждой остановке сервера, поэтому в него необходимо добавить проверу перед вызовом инсталляционной программы. Простейший способ проверки, установлена ли заплата, состоит в запросе реестра. Все заплаты Microsoft регистрируют сами себя в реестре:
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\WS2K3\<SPx>\<HotfixName>
<SPx> - сервис-пак, содержащий заплату, а <HotfixName> - это статья Microsoft Knowledge Base, в которой описана заплата
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix\<HotfixName>
<HotfixName> - это статья Microsoft Knowledge Base, в которой описана заплата
Пример скрипта на Visual Basic:
On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Updates\WS2K3\SP1\Q819639\Description")
If Err then Hotfix1="Q819639_WS2K3_SP1_x86_en.exe /Z /M" WshShell.Exec(Hotfix1)
End If
WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Updates\WS2K3\SP1\KB818529\Description")
If Err then Hotfix2="KB818529_WS2K3_SP1_x86_en.exe /Z /M" WshShell.Exec(Hotfix2)
End If
Чтобы указать этот скрипт как скрипт останова, используйте Group Policy Management Console для редактирования GPO, применяемого к терминальным серверам. Раскройте Computer Configuration, Windows Settings, Scripts (Startup/Shutdown), в правой панели дважды щелкните Shutdown. Откроется окно совйств скрипта:
Щелкните Show Files и скопируйте ваш файл скрипта и все инсталляционные файлы заплаты в эту папку. Затем используйте кнопку Add для настройки скрипта на запуск при остановке системы (shutdown). При каждом выключении или перезагрузке сервером скрипт проинсталлирует необходимые заплаты, отсутствующие в системе.
Хотя заплаты содержат встроенную логику, которая предотвращает их установку на систему с более новым сервис-паком, запретите или измените ваш скрипт после установки нового сервис-пака для уменьшения нагрузки - не нужно тратить время на попытки установки ненужных заплат.