Штефан работает в компании Computacenter; это известный европейский поставщик услуг по развитию инфраструктуры. В центре обработки данных главного ИТ-подразделения компании, расположенного в немецком городе Керпен, функционирует порядка 220 серверов. Кроме того, серверы установлены в офисах филиалов компании. При наличии столь обширного парка серверов модернизацию SMS никак нельзя было считать тривиальной процедурой. К счастью, Штефан имел достаточно высокую квалификацию, чтобы написать сценарий модернизации; в ходе проведенного корпорацией Microsoft конкурса Scripting Games 2007 он добился стопроцентного результата в категориях VBScript и Windows PowerShell. В недавнем интервью Штефан рассказал мне о компонентах своего решения и о том, как оно работает.

Почему вы решили модернизировать системы до уровня SMS 2003?

Системы SMS 2.0 появились в компании Computacenter Germany в 2001 году. За прошедшее с тех пор время мы поняли, что структура наших серверов SMS 2.0 была неоптимальной. Мы разработали план: начать все с чистого листа, реализовать новую, упрощенную инфраструктуру SMS 2003 и развернуть в ней новые средства, такие как Advanced Client, функции управления модернизацией программного обеспечения, средства интеграции Active Directory (AD), а также защищенные точки распространения. Большую проблему для нас представляли обновленные версии программных средств и модули коррекции, поскольку в Computacenter использовался механизм установки модулей коррекции собственной разработки, который не поддавался масштабированию в соответствии с нашими потребностями; если бы мы решили по-прежнему использовать систему SMS 2.0, нам потребовалась бы коренная переработка этого механизма.

В штате Computacenter имеется целый ряд специалистов по SMS. Концепцию и меры по планированию новой инфраструктуры SMS 2003 мы разрабатывали совместно с коллегами из консалтингового подразделения Computacenter, а реализацией этих мер и миграцией занимались только сотрудники центрального ИТ-подразделения.

Каким опытом в плане создания сценариев обладали вы до того, как приступили к работе над этим решением? Доводилось ли вам писать другие сценарии для сети своей организации?

 Программированием я занимаюсь несколько лет, а с языком VBScript начал работать в 2000 году. За эти годы я разработал целый ряд сценариев, как крупных, так и небольших. В 2000 году, когда у нас еще не были развернуты системы SMS 2.0, я написал сценарий для Windows Management Instrumentation (WMI); этот сценарий (мы назвали его SMS Light) осуществлял учет аппаратных и программных средств на клиентских компьютерах и сохранял результаты в объектно-ориентированной базе данных. Позднее я создал применяемое в автономном режиме решение для проверки программных исправлений и установки программного обеспечения, которое коллеги из Computacenter могли загружать для обновления своих клиентских систем без подключения к корпоративной сети. Этот инструмент используется до настоящего времени. Сейчас он может работать под управлением операционных систем Windows Vista, Windows XP и Windows 2003.

Сколько времени ушло у вас на разработку средства миграции? Как оно работает?

Разработка комплекта инструментов для миграции, состоящего из ряда файлов и сценариев, заняла у меня порядка шести недель, включая тестирование. Когда мы приступили к переносу содержимого SMS, новая инфраструктура SMS 2003 была уже готова — к тому времени мы как раз установили и настроили сервер узла, а также серверы распространения во всех офисах крупных филиалов. Служба обнаружения AD была сконфигурирована таким образом, чтобы все пользователи домена, группы и компьютеры уже находились в базе данных SMS 2003.

Сначала я решил, что вся информация об объектах SMS, полученная с помощью Windows Management Instrumentation (WMI), должна храниться в файлах XML. Чтобы использовать пространство имен WMI на сервере узла SMS, необходимо подключиться к пространству имен ootSMSsite_xxx, где xxx — это код узла вашей системы SMS. Далее для считывания объектов SMS и управления ими можно использовать все имеющиеся классы. Для подключения и манипулирования объектами в WMI мы задействовали сценарии VBScript, впрочем, с этой целью можно применять любое инструментальное средство, обеспечивающее чтение и запись в WMI, например WMI CIM Studio. Мы использовали сценарии, которые подключаются к пространству имен WMI на «старом» сервере SMS 2.0, а затем к соответствующему классу WMI (например, к классу SMS_Collection для считывания сведений о коллекциях SMS). Далее они считывают соответствующие данные и записывают их в файл XML — коллекции, пакеты, программы и рекламные объявления вместе с атрибутами, такими как идентификаторы, описания и т. д. В процессе миграции сценарии вновь подключаются к WMI на новом сервере SMS 2003, считывают необходимую информацию из файла XML и создают новые объекты с помощью видовых методов WMI, таких как SpawnInstance. Вот тут-то на помощь и приходит файл XML, ведь объекты с их отношениями хранить легче, нежели с помощью электронных таблиц Excel или аналогичных программ.

После этого началась ручная работа. Нам пришлось принимать решение относительно того, какие объекты сохранить, а какие удалить. База данных SMS была заполнена объектами, которые уже не требовались, просто они не были удалены после использования. В тех случаях, когда мы не могли с уверенностью сказать, пригодятся ли в будущем те или иные объекты, мы переносили их на новую систему. Кроме того, надо отметить, что такие не самые важные компоненты объектов SMS, как «описания» и «комментарии», обслуживались не лучшим образом. Часть этих данных предъявляется пользователю, поэтому мы хотели, чтобы упомянутые атрибуты были заполнены не пробелами либо ничего не значащими записями, а осмысленным текстом. Собственно говоря, это работа, которую не может выполнить никто, кроме нас, — ни инструментальное средство, ни консультант. Решать, какие объекты нужны, а какие нет, должен сам исполнитель. Этот этап не значится в числе технических требований к процедуре миграции, но нам просто хотелось избавить систему от «мусора».

Сценарий, воссоздающий коллекции на новом сервере SMS 2003, делает свою работу, считывая данные из файла XML. С другой стороны, он записывает в файл XML идентификатор ресурса вновь созданных коллекций. По завершении создания всех коллекций сценарий восстанавливает их исходную иерархию.

Надо отметить, что после прочтения информации с сервера SMS 2.0 мы внесли в коллекции, в частности в правила членства, некоторые изменения. Так, наши администраторы почти всегда пользовались прямыми правилами членства, иначе говоря, пользователи и/или группы вводились непосредственно как члены коллекции. Проблема в данном случае состоит в том, что член указывается с помощью его идентификатора ресурса, уникального идентификатора, представляющего объект в базе данных SMS. При проведении миграции, подобной той, которую осуществили мы, все эти идентификаторы ресурсов в новой базе данных SMS 2003 заменяются новыми, так что старые правила членства в коллекциях уже использовать нельзя. Мы прошлись по файлу XML и заменили все правила прямого членства правилами на базе запросов так, чтобы членство не зависело от каких-либо сведений, используемых исключительно системой SMS 2.0. Хочу подчеркнуть важность данного этапа нашей работы, и этим, кстати, отчасти объясняется тот факт, что коммерческие средства модернизации SMS 2.0 до уровня SMS 2003 до сих пор не появились на рынке. Если вы не измените правила прямого членства в коллекциях SMS, то сможете воссоздать их на новой системе, однако предсказать, кто окажется членом этих коллекций, будет невозможно.

Мы использовали еще один сценарий для экспорта всех пакетов и объявлений в файлы формата Managed Object Format (файлы MOF). Это текстовые файлы, так что их можно подвергать повторной компиляции на новом сервере SMS 2003 для создания таких объектов. При выполнении процедуры экспорта пакетов и рекламных объявлений нам пришлось изменить некоторые атрибуты, характерные исключительно для старого узла SMS. К примеру, нам пришлось снять комментарии с идентификатора пакета (этот идентификатор «привязан» к старому узлу SMS и будет вновь сформирован на сервере SMS 2003).

Далее мы воспользовались сценарием, который запускает MOF-компилятор mofcomp.exe на новом узле SMS 2003. С помощью этого компилятора в SMS добавляются новые пакеты. Сценарий записывает в файл XML идентификатор нового пакета. Нам пришлось дополнять MOF-файлы рекламных объявлений новым идентификатором коллекции и идентификатором пакета — информацией, которая уже хранилась в файле XML. После того как сценарий обновил MOF-файлы, мы вновь запустили компилятор mofcomp.exe, чтобы добавить рекламные объявления в SMS, и записали идентификатор нового рекламного объявления в файл XML.

На тот момент пакеты были созданы, но не поступили на серверы распространения. Мы создали сценарий для распределения этих пакетов в нескольких вариантах. Он позволял направлять все пакеты в указанную точку распространения, пересылать отдельные пакеты во все точки распространения или отдельные пакеты на один сервер распространения. Наконец, нам пришлось изменить поведение объявлений при загрузке с тем, чтобы удаленные по отношению к точке распространения клиенты загружали и выполняли программу. В соответствии с настройкой, применяемой по умолчанию, удаленные по отношению к точке распространения клиенты вообще не выполняют ее.

Упомянутые этапы описывают средство миграции лишь в общих чертах — там были и другие необходимые этапы, предусматривающие взаимодействие с основными компонентами SMS на более глубоком уровне. Вся процедура миграции предполагает выполнение различных этапов друг за другом в определенном порядке. Например, вначале нужно создать пакеты, а затем внести в MOF-файлы объявлений новые идентификаторы пакетов; только после этого можно создавать объявления.

Много ли времени ушло на миграцию?

В производственной сети миграция заняла всего около часа! Мы несколько раз протестировали набор инструментов в лабораторных условиях и не сомневались в том, что переход пройдет без осложнений. Сценарий выполнялся довольно быстро, и почти все время ушло на распределение пакетов по серверам распространения. Если бы в распоряжении наших администраторов не было средств миграции, им пришлось бы создавать все объекты SMS вручную. Учитывая, что в целом таких объектов более тысячи, не приходится сомневаться, что их создание отняло бы массу времени и что при выполнении этой задачи было бы трудно избежать ошибок.

Собираетесь ли вы переходить на новую версию SMS, System Center Configuration Manager 2007?

Да, сейчас мы оцениваем версию Configuration Manager 2007. При выполнении модернизации нам бы хотелось выполнять все операции прямо на месте, и мы надеемся, что нам не придется прибегнуть к помощи комплекта инструментов для миграции. Однако, хотя я и не проводил соответствующих испытаний, полагаю, что мой набор инструментов можно будет использовать и при переходе на Configuration Manager 2007, ведь классы WMI остаются прежними.