SC: Update Rollup 2 for System Center 2012

Microsoft System CenterВышел второй накопительный пакет для продуктов System Center 2012. Ознакомиться с изменениями можно на странице http://support.microsoft.com/kb/2706783/en-us. На этой же странице Вы найдете ссылки для загрузки. Данный пакет затрагивает все продукты линейки System Center 2012, кроме System Center 2012 — Configuration Manager.

Реклама

SM: Перевод режима Self-Service Portal из HTTP в HTTPS

Сколько мне крови выпил портал самообслуживания (Self-Service Portal) Service Manager прежде чем я его установил, но я его победил! Всё не заладилось с самого начала. Я изначально решил использовать HTTPS. Я открыл оснастку для запроса сертификата из корпоративного центра сертификации, заполнил все поля, добавил альтернативные DNS и установил его в локальное хранилище компьютера. Был установлен SharePoint 2010 Foundation SP1 и русский языковой пакет. А вот дальше начались приключения… При установке веб компонентов Silverlight и компонентов SharePoint у меня возникала ошибка:
custom action _RollBackPortalWebSite.11EE91AB_EABF_48A6_9973_4DCD73190AC6 unexpectedly closed the hInstall handle (type MSIHANDLE) provided to it. The custom action should be fixed to not close that handle.
В общем-то ошибка не говорит ни о чем. Копнув логи установки, я увидел следующее:

CreatePortalWebSite: Error: Unable to find Certificat 'E=support@domain.loc, SUPPORT.domain.loc, OU=IT Department, O=Company, L=Moscow, S=Russian Federation, C=RU' in personal store.,
 Stack: at Microsoft.MOMv3.Setup.MOMv3ManagedCAs.CreateWebSite(Session session, String WebSiteName, Int32 iWebSitePort, String VdirPath, String CertificatName, String AppPool)
 at Microsoft.MOMv3.Setup.MOMv3ManagedCAs.CreatePortalWebSite(Session session)

И дальше Rollback Action. Я решил – раз проблема с сертификатом, то поставлю в режиме HTTP, а на HTTPS поменяю уже после установки. Первый квест пройден, портал установился. Дальше я начал искать, а куда же установился мой портал? В итоге, как оказалось, инсталлятор сперва устанавливает компоненты Silverlight по 80 порту, затем сам портал уже по умолчанию устанавливается по порту на единицу выше предыдущего, т.е. 81… Совершенно не люблю предоставлять web сервисы, где конечным пользователям требуется вводить еще и номер порта. Ну да ладно, всё равно же решил ставить в режиме SSL :). Первым делом я полез в IIS и поменял Binding сайта Service Manager Portal, удалил HTTP и установил HTTPS со своим выписанным сертификатом.
Self-service portal IIS
Далее открыл SharePoint 2010 Central Administration, перешел в меню Alternate Access Mapping и заменил пути, попутно добавив альтернативный адрес для входа (если будете делать также, то не забудьте в DNS добавить CNAME :)).
Alternate Access Mapping
Ну раз уж HTTPS, то HTTPS до конца! Квест еще не закончен :). Далее мне захотелось освободить 80 порт, чтобы в дальнейшем настроить перенаправление с 80 порта на 443, для этого мне нужно было переназначить порт с сайта SCSMWebContentServer. Также, как и в случае с предыдущим сайтом, я поменял Binding с 80 порта на HTTPS с портом 444… В общем-то этот сайт не имеет страниц для конечного пользователя, поэтому можно выбрать любой свободный порт. Всё, можно проверять портал и убедиться, что Silverlight компоненты не будут загружаться :), это и понятно. Обратно возвращаемся в оснастку IIS и меняем параметр SMPortal_WebContentServer_URL на новый адрес.
Application Settings 01
Также меняем настройку ContentHostAbsoluteUri на новый адрес внутри приложения ContentHost внутри сайта SCSMWebContentServer.
Application Settings 02
Вроде бы всё работает, вроде бы Silverlight компоненты открываются, но при открытии домашней страницы или попытке создать запрос на обслуживание появляется ошибка внизу страницы «Не удается подключиться к службе WCF портала Service Manager. Для получения дополнительных сведений обратитесь в службу поддержки или к ИТ-администратору.», пришлось обратиться к себе :).
Bottom Line
Самое главное правило – «Смотри логи!». И так, что я вижу, Application Log сообщает следующее:

WebHost failed to process a request.
 Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/33860122
 Exception: System.ServiceModel.ServiceActivationException: The service '/ServiceHost/Services/DataAccessService.svc' cannot be activated due to an exception during compilation.  The exception message is: Could not find a base address that matches scheme http for the endpoint with binding CustomBinding. Registered base address schemes are [https].. ---> System.InvalidOperationException: Could not find a base address that matches scheme http for the endpoint with binding CustomBinding. Registered base address schemes are [https].
   at System.ServiceModel.ServiceHostBase.MakeAbsoluteUri(Uri relativeOrAbsoluteUri, Binding binding, UriSchemeKeyedCollection baseAddresses)
   at System.ServiceModel.Description.ConfigLoader.LoadServiceDescription(ServiceHostBase host, ServiceDescription description, ServiceElement serviceElement, Action`1 addBaseAddress)
   at System.ServiceModel.ServiceHostBase.ApplyConfiguration()
   at System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses)
   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(Type serviceType, Uri[] baseAddresses)
   at System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.CreateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.ActivateService(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)
   --- End of inner exception stack trace ---
   at System.ServiceModel.ServiceHostingEnvironment.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath)
   at System.ServiceModel.ServiceHostingEnvironment.EnsureServiceAvailableFast(String relativeVirtualPath)
 Process Name: w3wp
 Process ID: 6088

Сообщение как бы намекает, что попытка обратиться по HTTP была неудачна. Конечно неудачна, я же удалил все HTTP привязки :). Всё что нужно сделать, — это подправить файл web.config. Для этого открываем в блокноте (с повышенными правами) файл «C:\inetpub\wwwroot\System Center Service Manager Portal\ServiceHost\web.config» (такой путь по-умолчанию) и меняем внутри тега services:

<service … behaviorConfiguration="DefaultHttpServiceBehavior">

на

<service … behaviorConfiguration="DefaultHttpsServiceBehavior">

и

<endpoint … bindingConfiguration="DefaultHttpBinding">

на

<endpoint … bindingConfiguration="DefaultHttpsBinding">

В итоге должно получиться следующее

<services>
	<!--Data Access service-->
	<service name="Microsoft.EnterpriseManagement.Presentation.DataAccess.Server.DataAccessService" behaviorConfiguration="DefaultHttpsServiceBehavior">
		<!--Note:Recommended bindingConfiguration is DefaultHttpsBinding for production environment.
If bindingConfiguration=DefaultHttpsBinding then behaviorConfiguration should be DefaultHttpsServiceBehavior-->
		<endpoint address="" binding="customBinding" contract="Microsoft.EnterpriseManagement.Presentation.DataAccess.Server.IDataAccessService" bindingConfiguration="DefaultHttpsBinding">
		</endpoint>
	</service>
</services>

ВСЁ. После этого танца с бубнами портал поднялся, квест был закончен!

SUP: Обновление Mozilla Firefox с помощью SCUP 2011

Firefox updateВ прошлый раз я рассказывал, как можно обновить Java. Ввиду того, что в некоторых компаниях используют Mozilla Firefox, как альтернативный корпоративный браузер (и такое бывает :)), то я покажу, как можно процесс обновления «поставить на поток». И так, в первую очередь нам нужно определиться, на какую версию будем обновляться. На момент написания статьи последняя версия — 13.0.1. Скачиваем с сайта по ссылке http://download.mozilla.org/?product=firefox-13.0.1&os=win&lang=ru дистрибутив и выкладываем в общедоступную сетевую папку. Далее, открываем SCUP жмем кнопку «Create vendor» и создаем каталог «Mozilla», в созданном каталоге нажимаем кнопку «Create Product» и создаем каталог «Firefox»:

SCUP Overview

В верхней части окна нажимаем кнопку «Create» и выбираем Software Update. В открывшемся окне мы указываем основные параметры, которые у нас будут использоваться при установке:

  • Package Source — Имя файла. В нашем случае это «Firefox Setup 13.0.1.exe»
  • Download URL (or UNC) — Тут мы указываем полный путь до нашего файла. Я в своем примере использую доменный DFS путь
  • Command line — Ключ тихой инсталляции. В нашем случае «/s».

Firefox Package Information

Далее нажимаем «Next» и переходим к следующему окну. В окне «Required Information» мы вводим информацию о нашем обновлении:

  • Language — тут мы выбираем язык, для которого мы будем вводить информаци. В обновлении WSUS описание может быть написано на разных языках, я не буду этого делать и создам только на английском.
  • Title — имя обновления, «Mozilla Firefox 13.0.1»
  • Description — это поле заполнять не обязательно, тут мы можем вписать описание обновления. В моем случае, я просто взял описание браузера с официальной страницы — http://www.mozilla.org/en-US/projects/
  • Classification — Update
  • Vendor — Mozilla
  • Product — Firefox
  • More Info URL — http://www.mozilla.org

Firefox Required Information

Жмем «Next» и переходим к окну «Optional Information». В этом окне особо вбивать нечего, разве что только можем добавить поле Support URL — http://support.mozilla.org. Жмем кнопку «Next», в окнах Prerequisites и Superseded Updates нам особо делать нечего, т.к. у нас пакет не требует каких либо дополнительных элементов и переходим к окну правил установки — «Installable Rules». Тут как раз у нас потребуется сноровка и мастерство 🙂 Мы нажимаем на кнопку с изображением звездочки и выбираем:

  • Rule type — Registry
  • Subkey — SOFTWARE\Mozilla\Mozilla Firefox

Ставим галочки напротив полей:

  • Value Name — Default Value, т.к. нас не интересуют какие либо значения, нас интересует только наличие данной ветки реестра
  • This registry key is for a 32-bit application on a 64-bit system — эта галочка используется для того, чтобы 64 битные ОС искали запись в 32 битной ветке реестра (Wow6432Node)

И выбираем The registry setting must exist on the target computer to indicate applicability, т.к. как я уже написал выше — значения нас не интересуют. Нажимаем OK.

Firefox Registry Applicability Rule

Создаем еще одно правило, чтобы не вышло так, что под наш критерий попадут компьютеры с более поздней версией браузера. Также нажимаем кнопку с изображением звездочки и выбираем:

  • Rule type — File
  • File Name — firefox.exe

Ставим галочку напротив Use the registry to determine file location, мало ли кто куда поставил себе браузер :). В открывшихся строках пишем:

  • Subkey — SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe
  • Value — Path

Переключаем button на The file must satisfy the following rule on the target computer to indicate applicability и выбираем:

  • Property — Version
  • Operator — Less Than
  • Value — 13.0.1.4548 (это версия исполняемого файла firefox.exe на момент написания статьи)

File Firefox Applicability Rule

Жмем ОК. В итоге наше правило применения будет выглядеть следующим образом:

Firefox Installable Rules

Далее, чтобы не повторять один и тот же набор действий, мы сохраним созданный набор правил. Для этого необходимо перевести курсор мыши на самый верхний уровень, в нашем случае это оператор AND :), и нажать на иконку с изобажением дискеты. Назовем наше правило Firefox Rules. Нажимаем кнопку «Next» и переходим к следующему окну.

В окне «Installed Rules» создаем правила проверки того, что приложение установлено. Для этого нажимаем опять кнопку с изображением звездочки и в поле Rule type выбираем Saved Rule, далее выбираем наше сохраненное правило. Все, что нам нужно сделать, это в правиле File ‘[REGISTRY_PATH]\firefox.exe’ Version < ‘13.0.1.4548’ изменить значение Operator с «Less than» на «Equal to».

Installed Rules

Далее следует завершить все остальные шаги мастера и опубликовать наше обновление.

OM: System Center 2012 — Operations Manager Authoring Tools

Вот и свершилось чудо! Стали доступны инструменты для создания собственных менеджмент паков Operations Manager 2012:

System Center 2012 Visual Studio Authoring Extensions

System Center 2012 Visio MP Designer

SM: Когда одно мешает другому…

scsm vs scomСегодня при внедрении Service Manager у себя на предприятии заметил одну удручающую особенность. Из-за интеграции Operations Manager с AD, служба Health Service, принадлежащая Service Manager, периодически пыталась подключиться к серверу Operations Manager. Это пытались сделать оба сервера — Management и Datawarehouse серверы. При этом в логе этих же серверов периодически появляется ошибка с Event ID 20070 и сообщением:

The OpsMgr Connector connected to <здесь имя сервера OpsMgr>, but the connection was closed immediately after authentication occurred.  The most likely cause of this error is that the agent is not authorized to communicate with the server, or the server has not received configuration.  Check the event log on the server for the presence of 20000 events, indicating that agents which are not approved are attempting to connect.

В итоге, решение оказалось довольно простым — достаточно было добавить серверы Service Manager в исключение LDAP запроса Operations Manager. В моем случае имена всех серверов Service Manager начинаются с SVCMGR, поэтому я просто изменил свой запрос на

(&(objectClass=computer)(operatingSystem=Windows\20Server*)(!cn=SVCMGR*))

OpsMgr LDAP Query

,но если у вас политика именования серверов не позволяет сделать такой запрос, то можно просто перечислить сервера, которые будут добавлены в исключения на следующей вкладке — Exclusion Criteria. После того, как учетные записи серверов Service Manager пропали из групп, созданных Operations Manager, вышеописанные ошибки перестали появляться.