Как быстро развернуть 50 настольных систем с Windows 2000 Professional и всем необходимым прикладным программным обеспечением? Мне, как консультанту крупной телекоммуникационной компании, недавно пришлось столкнуться с такой проблемой, и я решил автоматизировать процесс. Еще до этого я много читал о Windows (WSH Script Host), и мне захотелось проверить эффективность сценариев на практике.
С помощью программы для создания образа диска, утилиты Sysprep и элементарных знаний о WSH мне удалось упростить процедуру инсталляции и конфигурирования настольных компьютеров. Предложенная мною процедура состоит из четырех этапов: создать образ жесткого диска, составить сценарий необходимых операций установки, подготовить образ диска для клонирования и клонировать его на целевые рабочие станции. Любой администратор может без труда развернуть рабочие станции, используя процедуры и исходный текст, приведенные в данной статье (конечно, в исходный текст придется внести изменения с учетом конкретных условий).
Среда развертывания
Мне пришлось иметь дело со смешанной сетью из серверов Novell NetWare 4.x, работающих в режиме эмуляции Bindery с NDS (Novell Directory Services), которые предоставляют службы файлов и печати. Домен Windows NT 4.0 обеспечивает доступ к серверам приложений. Стандартная операционная система - Windows 95, но администраторы и прикладные программисты компании использовали NT. Для сбора информации об аппаратных средствах и программном обеспечении, автоматизированной установки прикладных программ и дистанционного управления использовались пакеты заданий Microsoft Systems Management Server (SMS) версий 2.0 и 1.2.
Затем программисты Web-приложений заявили, что им необходима Windows 2000 Pro, поэтому нам пришлось составить план мероприятий по ее развертыванию. Мы решили использовать обычный метод развертывания рабочих станций, т. е. клонировать образ диска на каждой рабочей станции.
Создание образа жесткого диска
Чтобы клонировать рабочую станцию, необходимо установить на компьютере операционную систему и прикладные программы, а затем создать образ диска, который можно скопировать на жесткий диск другого компьютера. Клонирование диска - быстрый и эффективный способ развертывания рабочих станций. Он позволяет подготовить и настроить конфигурацию рабочей станции со всеми прикладными программами менее чем за 30 мин.
Программы клонирования дисков выпускает несколько компаний. Чаще всего я пользуюсь утилитами Ghost от Symantec и Drive Image Pro фирмы PowerQuest, хотя все продукты работают примерно одинаково. Компьютер загружается в режиме DOS, а затем запускается программа формирования образа диска. Можно получить образ всего диска или единственного раздела и сохранить его на другом разделе, диске или общем сетевом накопителе. Впоследствии сохраненный образ можно восстановить на другом диске. Выбирая программу клонирования, следует обратить внимание на функцию распределения данных по дискам, которая позволяет разбить образ на малые фрагменты. Такая возможность важна, если размер образа превышает 640 Мбайт и планируется сохранить его на компакт-дисках. Метод клонирования дисков удобнее всего применять на унифицированных аппаратных платформах. Видеоплата, сетевой адаптер, звуковые платы и другие устройства должны быть одинаковыми на всех компьютерах и размещаться в одних и тех же гнездах. Жесткие диски не обязательно должны иметь одинаковую емкость, но загружаемый образ не должен быть больше целевого диска. Возможно, чтобы учесть все аппаратные изменения, потребуется создать несколько образов дисков, но желательно сократить их число до минимума.
Чтобы подготовиться к созданию образа диска, нужно установить Windows 2000 Pro на одну из рабочих станций. Следует оставить пустым пароль локального администратора и не вводить компьютер в состав домена. Затем необходимо установить все приложения, которые должны быть на стандартной машине, и настроить конфигурацию операционной системы и каждого приложения.
Необходимо продумать, какие стоит выбрать часто используемые параметры операционной системы и приложений. Цель администратора - сократить до минимума число выполняемых вручную операций конфигурирования на каждой рабочей станции. Например, если текстовый редактор работает с общими каталогами шаблонов, то нужно указать их местонахождение. В нашей компании рабочие станции подключены к серверу домена NT 4.0, поэтому я не мог воспользоваться преимуществами групповых политик Windows 2000. Тем не менее я нашел способ обновлять антивирусные базы данных, составив локальную политику для запуска сценариев при завершении работы.
Перед созданием главного образа необходимо освободить диск от всего лишнего, очистить Recycle Bin, удалить все временные файлы, созданные в процессе установки и работы пользователя, очистить список Documents в меню Start и список раннее открытых страниц браузера. Следует также отменить все постоянные подключения к сетевым дискам, сделанные при загрузке программ. С помощью утилиты Chkdsk можно убедиться, что в файловой системе диска нет ошибок, а потом очистить журналы событий Application, Security и System.
Далее следует создать 3,5-дюймовую дискету для загрузки по сети. Программу формирования образа диска нужно скопировать на другой 3,5-дюймовый диск. Перезапустив компьютер с диска загрузки по сети, следует подключиться к общему сетевому накопителю, имеющему достаточное пространство для хранения образа диска. После завершения начальной загрузки компьютера следует вставить второй 3,5-дюймовый диск и запустить программу создания образа диска; образ локального жесткого диска будет сохранен на только что назначенном сетевом накопителе.
После того как образ диска создан, можно воспользоваться диском загрузки по сети, чтобы клонировать рабочие станции прямо с образа, сохраненного на общем сетевом диске. Альтернативный метод - клонировать рабочие станции с помощью образа, записанного на компакт-дисках. При использовании компакт-дисков необходимо иметь загрузочный диск с драйверами CD-ROM или сохранить образ на загрузочном компакт-диске. Клонировать рабочие станции с помощью загрузочного компакт-диска очень легко. О том, как подготовить загрузочный CD-ROM, рассказано в руководстве по устройству записи на CD-ROM или на Web-узле изготовителя.
Подготовка сценария FinalSetup.vbs
WSH-сценарии придутся по душе администраторам, привыкшим использовать командные файлы. WSH - встроенный интерпретирующий механизм сценариев Windows 2000 и Windows 98. Его можно инсталлировать и на машинах с NT 4.0 и Windows 95. Интерпретатор WSH совместим с командами WSH, VBScript и JScript (вариант JavaScript компании Microsoft).
С помощью сценариев WSH можно манипулировать файловой системой, автоматизировать работу с настольными приложениями, управлять системой Microsoft SQL Server и выполнять многие другие операции. Освоить WSH легко - необходимы лишь текстовый редактор и компьютер с установленным на нем WSH. Подробную информацию о WSH можно найти на сайте Microsoft Windows Script Technologies (http://msdn.microsoft.com/scripting). Сценарий FinalSetup.vbs (см. Листинг 1) составлен с использованием WSH и VBScript. Работая над сценарием, я постарался удобно расположить исходный текст и дополнить его подробными комментариями. Комментарии облегчают чтение программы, а по прошествии нескольких месяцев помогают вспомнить, какие действия выполняет сценарий. Во многих случаях я даже сохранил отладочные операторы (оформив их в качестве комментариев), которые применялись в процессе подготовки и тестирования сценария.
FinalSetup.vbs завершает последние операции процесса установки, прежде чем сотрудник, выполняющий инсталляцию, передает компьютер конечному пользователю. Программа проверяет, зарегистрирован ли сотрудник, выполняющий сценарий, как Administrator, а компьютер подсоединяется к домену. Затем сценарий добавляет глобальную группу WEBDEV в группу Local Administrators на компьютере, чтобы Web-разработчики могли устанавливать программы и конфигурировать свои системы.
Первые два оператора сценария обязательно должны присутствовать в каждом сценарии. Оператор OPTION EX-PLICIT требует объявить переменные перед их использованием, это позволяет уменьшить количество ошибок в сценарии. В VBScript объявлять переменные необязательно. Но если не применить режим OPTION EXPLICIT, то опечатка в имени переменной приведет к созданию новой переменной. Такую ошибку легко найти в простом сценарии, но не в исходном тексте длиною в сотни строк. Оператор ON ERROR RESUME NEXT запрещает останавливать работу сценария в случае ошибки. Предназначение данного оператора не в том, чтобы игнорировать ошибки, а в том, чтобы помочь исправлять их, избегая необратимых последствий для сценария.
В следующем разделе FinalSetup.vbs содержатся определения переменных. Все переменные можно записать в одной строке, разделяя запятыми, или разместить их в разных строках, что я и сделал. Имя переменной должно начинаться с буквы и может содержать до 255 символов. В имени могут быть буквы, цифры и символы подчеркивания (_). Для обозначения типа данных (например, object, string, integer), сохраняемых в переменной, принято использовать односимвольные префиксы.
Следующий раздел сценария отведен для определений констант, которые похожи на переменные, за исключением того, что однажды определенную величину изменить нельзя. В сценарии применяются три константы: GLOBAL_GROUP, LOCAL_GROUP и DOMAIN.
Для решения практических задач в сценарии необходимо использовать объекты, содержащие методы (функции, выполняемые объектом) и свойства (характеристики). Прежде чем использовать объект в сценарии, необходимо создать экземпляр объекта. При этом объект загружается в память и регистрируется. Для создания объектов в сценариях WSH используется функция Wscript.CreateObject(). В FinalSetup.vbs применяется несколько встроенных объектов WSH.
В следующем разделе FinalSetup.vbs создается два объекта: Network (Wscript.Network) и Shell (Wscript.Shell). С помощью объекта Network устанавливается связь сценария с сетевыми ресурсами. Благодаря объекту Shell из сценария можно запустить выполняемый файл, манипулировать реестром, читать переменные среды, создавать ярлыки и выполнять некоторые другие операции. В каждом случае созданный объект сохраняется в переменной (oWshNet и oWshShell, соответственно), которая используется для доступа к методам и свойствам объекта.
Сценарий успешно выполнит задачу только в том случае, если он работает от имени учетной записи локального администратора. Чтобы проверить, действительно ли пользователь является локальным администратором, сценарий читает свойство Username ранее созданного объекта Network и сохраняет это значение в переменной sUser. Сценарий получает имя ком-пьютера из свойства Computername и сохраняет его в переменной sComp-Name. Затем в сценарии используется функция UCASE(), чтобы преобразовать символы в значении sUser к верхнему регистру и сравнить результат с ADMINISTRATOR. Если значение sUser отличается от ADMINISTRATOR, то сценарий выдает сообщение об ошибке и завершает работу.
Если пользователь - ADMINISTRATOR, то начинается выполнение следующего раздела сценария, в котором происходит присоединение компьютера к домену. Сначала метод oWsh-Shell.RegRead читает раздел реестра HKEY_LOCAL_MACHINESOFT-WAREMicrosoftWindowsNTCurrent-VersionWinlogonDomainCacheGONDOR и сохраняет результат этой операции в переменной sInDomain. Затем сценарий выполняет две проверки. Во-первых, выполняется проверка равенства sInDomain нулю (т. е. пуст ли раздел реестра). Если это так, то сценарий выводит сообщение об ошибке и завершает работу. Во-вторых, сценарий проверяет наличие фатальной ошибки 2147024894, которая означает, что данный раздел реестра не существует. В этом случае работа сценария упорядоченно завершается. Если раздел реестра отсутствует и в сценарии нет упомянутого ранее оператора ON ERROR RESUME NEXT, то пользователь получит сообщение об ошибке, показанное на Экране 1.
Экран 1. Сообщение об ошибке WSH. |
Затем сценарий вводит глобальную группу домена NT 4.0 в локальную группу Administrators на компьютере. Для этой цели сценарий сначала устанавливает связь с базой данных SAM на локальном компьютере через Active Directory Service Interfaces (ADSI). Сценарий создает объект oGroup, используя функцию GetObject() ADSI для связи с WinNT-провайдером ADSI. Установив соединение с WinNT-провайдером, сценарий применяет метод IsMember объекта oGroup, чтобы удостовериться, что глобальная группа домена (GLOBAL_GROUP) - член локальной группы Administrator. Если глобальная группа не входит в локальную, то значение переменной sMem-ber - FALSE (0), и сценарий использует метод oGroup.Add, чтобы ввести глобальную группу в состав локальной. Сценарий повторно проверяет значение sMember, чтобы убедиться, что оно равно TRUE (-1), а затем использует метод oWshShell.Popup для вывода на экран сообщения о состоянии и продолжает выполнение после паузы длительностью 5 с.
Поскольку в компании применяется SMS, последнее действие сценария - инсталлировать клиентскую часть SMS на компьютере. После вывода сообщения сценарий использует метод oWshNet.MapNetworkDrive, чтобы подсоединиться к сетевому диску N на сервере SMS, и метод oWshShell.Run - для запуска smsman.exe. После завершения работы smsman.exe сценарий разрывает связь с сетевым накопителем и выводит на экран завершающее сообщение.
Подготовка образа диска
После того как создан главный образ диска, следует подготовить его к тиражированию с помощью утилиты Sysprep. Эта утилита состоит из трех файлов: sysprep.exe, setupcl.exe и sysprep.inf. Sysprep.exe готовит диск для клонирования и запускает setupcl.exe, который генерирует уникальный SID клонированного образа. С помощью факультативного файла sysprep.inf можно автоматизировать процедуру Mini-Setup Wizard утилиты Sysprep. Во время первой загрузки компьютера после клонирования мастер Mini-Setup Wizard запрашивает у пользователя информацию, которой нет в файле sysprep.inf: в частности, имя компьютера, временную зону и членство в домене.
С помощью Sysprep можно скопировать образ диска на компьютер с тем же уровнем HAL (hardware abstraction layer - уровень абстракции аппаратных средств), даже если он оснащен иными устройствами, чем машина, на которой был получен образ. Образ должен содержать все драйверы, которых нет в файле C:winntdriver cachei386driver.cab, а в разделе [UNATTENDED] файла sysprep.inf должно быть указано местоположение дополнительных драйверов.
Версию Sysprep можно найти на компакт-диске Windows 2000 Pro в support oolsdeploy.cab, а обновленная версия находится на Web-сайте Microsoft по адресу: http://www.microsoft.com/windows2000/techinfo/ planning/incremental/sysprep11.asp. Прежде чем приступать к работе с утилитой, рекомендуется загрузить и прочитать материал «Automating Windows 2000 Deployments with Sysprep». В приложении B этого документа приведены команды, необходимые для создания sysprep.inf, а в документе «Microsoft Windows 2000 Guide to Unattended Setup» (unattended.doc) в папке deploy.cab на компакт-диске с Windows 2000 Pro содержится информация о синтаксисе команд.
В Листинге 2 показан составленный мною файл sysprep.inf. Ниже приводится описание каждого раздела и действий, которые должен выполнить мастер Mini-Setup Wizard.
[Unattended]. В разделе [Unattended] строка OemPreInstall = no указывает, что будет использоваться клонированный диск, а не процедура установки без участия оператора. OemSkipEula = yes отменяет вывод на экран лицензионного соглашения конечного пользователя (EULA). Запись KeepPageFile = 0 заставляет Windows 2000 создавать заново файл подкачки компьютера, чтобы сгладить любые различия в размерах оперативной памяти между основной и целевой машинами. ExtendOem-Partition = 1 расширяет системный раздел на все оставшееся пространство диска. Можно также увеличить раздел диска на указанное число мегабайт (например, ExtendOemPartition = 75), оставив свободное пространство для дополнительных разделов. Функция ExtendOemPartition применима только к разделам NTFS.
Не использовавшийся мною, но достойный упоминания параметр - OemPnPDriversPath, с помощью которого можно добавлять драйверы, отсутствующие в файле C:winntdriver cachei386driver.cab. Если в процессе инсталляции Mini-Setup Wizard обнаруживает на целевом компьютере новые аппаратные средства, мастер ищет подходящие драйверы в файле driver.cab, а затем, при необходимости, в месте, указанном параметром OemPnPDriversPath.
[GuiUnattended]. В разделе [GuiUnat-tended] параметр OemSkipWelcome = 1 запрещает вывод на экран приветствия. Строка AdminPassword = elyod[ устанавливает на целевом компьютере стандартный локальный пароль Admi-nistrator (elyod[), используемый в компании на всех системах NT. TimeZone = 035 устанавливает временную зону (код 035 соответствует времени на востоке США). В файле unattended.doc содержится таблица кодов временных зон. Если параметр OemSkipRegional = 1, то мастер запрашивает у пользователя всю информацию о регионе.
[GuiRunOnce]. Команды, перечисленные в [GuiRunOnce], добавляются в раздел реестра HKEY_LOCAL_MAC-HINESOFTWAREMicrosoftWin-dowsCurrentVersionRunOnce и запускаются после окончания работы мастера Mini-Setup Wizard. В данном случае command01 = c:winntsystem32finalsetup.vbs запускает сценарий, составленный мною, чтобы завершить процесс установки.
[UserData]. Строка OrgName = «XYZ Communications» в разделе [UserData] задает имя компании, а строка FullName = «XYZ User» - имя пользователя. Если имена содержат пробелы, их необходимо заключить в кавычки; для всех компьютеров следует использовать одно имя. Если оставить эти параметры пустыми, то мастер Mini-Setup Wizard запрашивает имена у пользователя. Если параметр Com-puterName (как в данном случае) пуст, то Mini-Setup Wizard предложит пользователю ввести имя. Если параметру ComputerName присвоено значение *, то Mini-Setup Wizard генерирует случайное имя компьютера.
[Identification]. Строка JoinDomain = GONDOR в разделе [Identification] автоматически заносит компьютер в NT-домен GONDOR. Чтобы добавить компьютеры в домен, необходимо указать пользователя с соответствующими правами - именем в DomainAdmin и паролем в DomainAdminPassword. Я создал учетную запись пользователя домена desktop и присвоил ей полномочие Add Workstations to Domain (добавлять в домен рабочие станции).
Сетевые имена и пароли в файле sysprep.inf хранятся в простом текстовом формате, и на первый взгляд это очень опасно. Однако Mini-Setup Wizard автоматически удаляет на целевом компьютере папку, в которой хранится sysprep.inf.
[Networking]. Если параметру Install-defaultComponents = в разделе [Networking] присвоено значение no, то мастер Mini-Setup с набором сетевых протоколов ничего не делает. Главный образ диска содержит все сетевые параметры, но если часть машин оснащена несколькими сетевыми адаптерами, то параметры для них можно назначить в данном разделе.
Сценарий FinalSetup.vbs и утилита Sysprep готовы, и их необходимо добавить к главному образу диска, чтобы иметь возможность приступить к клонированию. Чтобы добавить файлы к образу диска, нужно сначала скопировать их на компьютер, который использовался для создания первоначального образа, а затем получить второй образ диска. Я составил командный файл с именем prepsys.bat (см. Листинг 3), чтобы с его помощью скопировать FinalSetup.vbs в каталог C:winntsystem32 компьютера, утилиту Sysprep и вспомогательные файлы в каталог Sysprep на системном диске и запустить утилиту Sysprep. При выполнении Sysprep с ключом /forceshutdown работа компьютера должна завершаться автоматически. Если этого не произойдет, следует выключить питание вручную, после того как погаснет индикатор активности жесткого диска. Пока перезапускать компьютер не следует. Чтобы создать второй образ диска компьютера, нужно, как прежде, вставить дискету для загрузки по сети, загрузить систему и соединиться с общим сетевым диском. Затем следует запустить программу создания образа диска и создать второй образ, дав ему новое имя. Новый образ будет использоваться для клонирования рабочих станций. Если загрузить этот образ на компьютер и запустить систему, то установленный образ выполнит все описанные в данной статье операции установки. Первый образ рекомендуется сохранить на случай, если придется вносить изменения. При необходимости изменить главный образ следует загрузить на машину первый главный образ. Нужно сделать все необходимые изменения конфигурации и приложений и очистить диск, как описано выше. Затем следует внести изменения в сценарий FinalSetup.vbs и файл sysprep.inf и скопировать на компьютер сценарий и файлы Sysprep с помощью prepsys.bat. Prepsys.bat также запустит Sysprep, чтобы создать новый образ диска для клонирования.
Диск, приготовленный с помощью утилиты Sysprep, можно изменить, но я не рекомендую этого делать. При первой загрузке компьютера мастер Mini-Setup Wizard выполняет операции установки. Прежде чем приступать к выполнению изменений, администратору придется отменить работу Mini-Setup Wizard. При этом очень легко допустить ошибку.
Клонирование главного образа на рабочую станцию
Клонировать второй главный образ диска на целевую рабочую станцию можно одним из трех способов: загрузить рабочую станцию с помощью дискеты для загрузки по сети, а затем скопировать образ диска с общего сетевого накопителя; использовать образ, записанный на загрузочном компакт-диске; скопировать главный диск одновременно на несколько жестких дисков методом дублирования. При этом может оказаться, что для разных рабочих станций необходимо использовать различные методы.
На мой взгляд, лучше всего использовать загрузочный компакт-диск. С помощью компакт-диска образ можно скопировать на компьютер, не устанавливая сетевого соединения (необходимого при использовании общего сетевого накопителя) и не вынимая из компьютера жесткого диска (как в случае с дублированием дисков). Компакт-диск (и метод дублирования дисков) не создает нагрузки на каналы связи.
После того как образ диска будет загружен на целевую рабочую станцию, ее следует перезагрузить. Во время первого сеанса работы Sysprep запускает мастер Mini-Setup Wizard, который просит пользователя ввести все данные, которых нет в файле sysprep.inf. В нашей компании пользователю потребовалось ввести лишь имя компьютера. Оператор использовал принятые в компании соглашения, чтобы дать машине уникальное имя на основе имени пользователя, подразделения и физического местонахождения. Mini-Setup Wizard заносит данные в раздел реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsCurrentVersionRunOnce. Windows 2000 запускает сценарий FinalSetup.vbs, когда кто-нибудь регистрируется на компьютере в первый раз.
Составив план, администратор может без труда обновлять или переустанавливать клиентские машины за несколько минут. Программа для создания образа диска, сценарий WSH и утилита Microsoft Sysprep должны быть в арсенале любого администратора, который занимается развертыванием настольных систем. На освоение этих инструментов потребуется не больше времени, чем на инсталляцию и конфигурирование десятка настольных машин традиционным способом.
Дон Бейкер - консультант компании Internosis. Имеет сертификаты MCSE и MCP и специализируется на Microsoft Systems Management. С ним можно связаться по адресу: dbaker@internosis.com