MP: Active Directory Group Populator Management Pack

Сейчас работаю в довольно крупной компании и одной из моих обязанностей является поддержка Operations Manager 2007 R2. Из-за отсутствия какой либо стандартизации в наименовании и трудности разделения ресурсов было очень тяжело создать ролевую модель. Постоянно приходилось лезть в Authoring Console, добавлять ресурсы в группы и т.д. В итоге было решено написать пакет управления, который бы мог на основе групп Active Directory без участия администраторов Operations Manager добавлять ресурсы в группы. Таких ресурсов всего 3 — Microsoft.Windows.Computer, Microsoft.SystemCenter.HealthServiceWatcher и Microsoft.Windows.Cluster. Пакеты написаны классически — Library и Discovery. Первый пакет запечатан и содержит 3 модуля. Второй пакет изначально не запечатан, чтобы Вы могли сами изменить перед импортом некоторые параметры, а именно, правило обнаружения — «Discover Group Populator Active Directory Root Organizational Unit». Именно это правило определяет корневой OU, с которого начнется обнаружение нижестоящих OU и групп. В публичной версии я намеренно отключил это правило обнаружения и в качестве корневого OU указал «OU=OpsMgr Groups,DC=contoso,DC=com». В публичной версии также отключено правило наполнения групп классом Microsoft.Windows.Cluster (Populate Group Populator Active Directory Group with Windows Cluster), т.к. он не входит в стандартный набор пакетов управления.

Теперь о модулях… Все модули находятся в пакете Group Populator Active Directory Library Management Pack:

  • GroupPopulator.ActiveDirectory.TimedPowerShell.DiscoveryProvider.OrganizationalUnit — используется для обнаружения Organizational Unit (класс GroupPopulator.ActiveDirectory.OrganizationalUnit);
  • GroupPopulator.ActiveDirectory.TimedPowerShell.DiscoveryProvider.Group — используется для обнаружения групп (класс GroupPopulator.ActiveDirectory.Group) внутри OU;
  • GroupPopulator.ActiveDirectory.TimedPowerShell.DiscoveryProvider.GroupPopulator — используется для наполнения групп определенным классом. Объекты данного класса, чьё имя совпадает с FQDN или NetBIOS именем компьютера в группе AD будет добавлен в группу Operations Manager.

Используя эти модули Вы сможете также сделать несколько корневых OU или же добавить другие классы в группы. Вот как это выглядит у меня:

OpsMgrADGroup

Обновление от 29.08.2013:

  • Версии пакетов — 1.0.0.1;
  • Из имен классов убрано «Group Populator»;
  • Пакеты переименованы из «Group Populator Active Directory» в «Active Directory Group Populator»;
  • Исправлена ошибка с наполнением OU в модуле GroupPopulator.ActiveDirectory.TimedPowerShell.DiscoveryProvider.OrganizationalUnit. Ранее OU не наполнялись если не было дочернего OU;
  • Исправлено обнаружение имен групп в модуле GroupPopulator.ActiveDirectory.TimedPowerShell.DiscoveryProvider.GroupPopulator. Ранее, при использовании данного модуля отдельно, наполнитель групп не возвращал имя группы;
  • Модуль GroupPopulator.ActiveDirectory.TimedPowerShell.DiscoveryProvider.GroupPopulator теперь также работает в Operations Manager 2012;
  • Из имен объектов убраны «- Organizational Unit» и «- Group».

Пакет управления можно скачать здесь. После загрузки поменяйте расширение файла на zip.

Реклама

Детали bobgreen84
System Center Products Specialist

16 Responses to MP: Active Directory Group Populator Management Pack

  1. pamarths says:

    Thanks for this post. All these days I was thinking about Syncing SCOM Groups with AD security groups. Your post changed my perspective. I love the idea of creating classes/instances for AD groups in SCOM.

  2. PantoR says:

    Замечательная штука! Давно искал что-то подобное, жаль, что под 2012 не работает, мы на него уже перешли, попробую прикрутить, может чего получится, если что — напишу…

    • bobgreen84 says:

      А Вы пробовали сами? Просто у меня нет под рукой OpsMgr 2012. Майкрософт оставил алиасы командлетов от OpsMgr 2007 R2. Вполне возможно, что и без всяких танцов с бубнами заведется. Главное правильно переопределить правило обнаружения корневого OU.

  3. PantoR says:

    Пробую как раз, приходится переписывать, танцы с бубном нужны, т.к. некоторых командлетов попросту уже нет, а замена их только через вызовы методов, возможно сегодня как раз допилю, уже создаются объекты OU и групп, жду, когда наполняться будут, поменял время дискавера на 5 минут, иначе превое наполнение оушень долго ждать.. 🙂

  4. PantoR says:

    Что-то не наполняются у меня группы, объекты для OU и групп создаются, а наполнения не происходит, буду копать дальше, но я не шибко силён во внутренностях MP 😦
    Да и дебажить скрипт трудновато, при запуске скрипта из консоли выдаёт ошибку:
    Exception calling «CreateDiscoveryData» with «3» argument(s): «Invalid class string (Exception from HRESULT: 0x800401F3 (CO_E_CLASSSTRING))»
    Приходится каждый раз перезапечатывать пак и импортировать в SCOM 😦

    • bobgreen84 says:

      Скрипты по созданию групп и ou должны работать на 2012 без каких либо изменений. Наполнение… видимо не совместимы старые командлеты. Помимо командлетов в скрипте используются методы классов, которые также могли измениться. Я постараюсь унифицировать модуль для работы с 2012.

  5. PantoR says:

    Это было бы просто замечательно! Могу поделиться тем, что я уже сделал, чтобы не искать, какие командлеты на что заменены в 2012. С классами и связями я пока не совсем разобрался, но ещё покопаюсь…

  6. PantoR says:

    Видимо что-то с классами всё-таки, прошёл дальше, теперь получаю ошибку:
    ================
    Cannot convert argument «0», with value: «PrincipalName», for «GetMonitoringPropertyValue» to type «Microsoft.Enterpris
    eManagement.Configuration.MonitoringClassProperty»: «Cannot convert the «PrincipalName» value of type «Microsoft.Enterp
    riseManagement.Configuration.ManagementPackProperty» to type «Microsoft.EnterpriseManagement.Configuration.MonitoringCl
    assProperty».»
    At line:9 char:94
    + $Child.AddProperty($Property.Id, $MonitoringObject.GetMonitoringPropertyValue <<<< ($Property))
    + CategoryInfo : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
    ================

    • bobgreen84 says:

      В Operations Manager 2012 похоже поменялся тип данных возвращаемый командлетом Get-MonitoringClassProperties. Для работы с 2012 поменялся скрипт для поиска ключевых свойств объекта. Теперь это сделано через метод GetMonitoringProperties() объекта, а не класса.

  7. PantoR says:

    Юхаааа, я победил, наполняется, могу выложить готовый MP, только надо удалить дебаггинг 🙂

  8. PantoR says:

    Как доделаю — вышлю, проблема с добавлением объектов класса Microsoft.SystemCenter.HealthServiceWatcher, пока они не добавляются…

  9. PantoR says:

    Поменял версию на 1.0.1.0, сейчас буду добавлять в продуктив, присутствует 2 бага или фичи, кому как угодно 🙂
    1. Если в target OU нет вложенных OU — группы не дискаверятся, что странно, позже разберусь.
    2. Если в одну из групп AD входит SCOM сервер — не добавляется его Health Watcher, т.к. он другого класса, «Health Service Watcher (Collection Management Server)», пока можно не кидать SCOM сервер в группу AD, добавлять лапками, позже поправлю скрипт.

    • bobgreen84 says:

      1. Пофиксил в новой версии 1.0.0.1;
      2. Проверил, Health Service Watcher добавляется для всех серверов, в т.ч. и для менеджмент серверов.

      Обновил версию MP, теперь он должен работать и на OpsMgr 2012.

  10. PantoR says:

    И да, с кластерами ещё не проверял…

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: