вторник, 17 августа 2010 г.

Работаем с App-V (часть IV)

Продолжая цикл статей и заметок об App-V, я хотел бы рассказать о возможности публикации и загрузки пакетов приложений с использованием Web-сервера.

Часть 1: http://blog.vmpress.org/2010/05/app-v-i.html
Часть 2: http://blog.vmpress.org/2010/05/app-v-ii.html
Часть 3: http://blog.vmpress.org/2010/06/app-v-iii.html

Данный вариант доступа может быть полезен для пользователей работающих за пределами локальной сети и не имеющих возможности подключаться к серверам по протоколу RTSP или SMB для загрузки пакетов приложений.

При реализации подобной конфигурации важно разделять два момента: публикацию приложений и, собственно, саму загрузку файлов.

С настройкой загрузки файлов по HTTP нет ничего сложного.

Чтобы клиент App-V определил, что загрузка .sft пакета должна осуществляться по протоколу HTTP, вам нужно отредактировать .osd файл. Откройте нужный пакет в программе-упаковщике Sequencer, и на вкладке Deployment в качестве протокола выберите HTTP или HTTPS, а также задайте имя сервера (Hostname) и путь (Path) к web-директории, где будет располагаться .sft файл.


При желании, вы можете вручную отредактировать .osd, прописав в параметре CODEBASE HREF= полный путь к .sft файлу.


Далее вам потребуется установить Web-сервер, на котором будут располагаться пакеты приложений. В качестве примера возьмем IIS 7.0.

Для IIS вам потребуется установить следующие компоненты:
  • ASP.Net
  • ASP
  • Integrated Authentication
После установки откройте консоль управления IIS, выберите web-сайт и добавьте новую web-директорию, в которой в дальнейшем будут располагать пакеты приложений. Перейдите в созданную директорию в секции IIS, выберите Directory Browsing и включите (Enable) возможность просмотра содержимого папки.

Также вам потребуется задать MIME Types для корректной обработки расширений файлов Web-сервером. Для этого выберите ваш сайт и в секции IIS выберите MIME Types.

С помощью кнопки Add... задайте MIME типы для следующих расширений файлов.

Расширение: .osd, MIME type: application/softricity-osd
Расширение: .sft, MIME type: application/softricity-sft
Расширение: .sprj, MIME type: application/softricity-sprj

После этого скопируйте пакет в соответствующую директорию на Web-сервере. В данном примере пакеты приложений располагаются в отдельных дочерних папках внутри главной директории.

Если вы планируете, чтобы клиенты самостоятельно подключались к Web-серверу и получали список опубликованных пакетов вам предстоит выполнить еще ряд действий.

Для получения информации о доступных пакетах клиенты используют файл-описатель (manifest) в формате .xml.

Данный файл автоматически создается при пакетировании приложения и располагается в той же директории, что и остальные файлы.

Структура файла выглядит следующим образом.
Информация об приложениях находится внутри секции <APPLIST><APP></APP></APPLIST>.

Обратите внимание на переменную %SFT_MIME_SOURCE%, присутствующую в файле-описателе. С ее помощью клиент определяет абсолютный путь к файлу .osd и изображениям ярлыков приложения. Значение переменной можно задать при установке или при помощи групповых политик, а также отредактировав соответствующие ключи реестра:
HKLM\SOFTWARE\Microsoft\SoftGrid\4.5\Client\Configuration\IconSourceRoot
HKLM\SOFTWARE\Microsoft\SoftGrid\4.5\Client\Configuration\OSDSourceRoot

Использование переменной %SFT_MIME_SOURCE% вместо жесткого прописывания абсолютного пути может быть полезно в случае, когда у вас в компании есть несколько мобильных пользователей, переезжающих с места на место. В этом случае, с помощью групповых политик вы можете задавать путь к ближайшему дистрибутивному серверу для ускорения процедуры загрузки новых опубликованных пакетов. Аналогичным образом вы можете менять ключ HKLM\SOFTWARE\Microsoft\SoftGrid\4.5\Client\Configuration\ApplicationSourceRoot для изменения пути к пакету .sft, указанном в .osd файле.

Еще один момент на который стоит обратить внимание - если вы планируете размещать содержимое каждого пакета не в корневой папке, а в отдельной директории (например, "App-V/Adobe9"), вам, все-таки, придется отредактировать файл-описатель .xml, добавив после %SFT_MIME_SOURCE% имя дочерней папки.

Если вы планируете опубликовать несколько приложений, используя единый файл-описатель, то можете отредактировать его вручную, или же использовать специальный скрипт, который будет генерировать данный файл автоматически.

Вариант с использованием скрипта достаточно подробно описан (например, здесь), кроме того, John Sheehan выложил пример скрипта для создания файла-описателя на C#. Исходный код сценариев с небольшими правками вы можете загрузить отсюда или отсюда.

Сохраните файлы в корневой директории, где расположены папки с опубликованными приложениями.

Скрипт ищет файлы с именем _manifest.xml во всех подпапках,  копирует из них информацию о приложениях, после чего генерирует файл в формате .xml и отдает его клиенту.

Все, что вам осталось - это настроить клиентов на Web-сервер публикаций. Сделать это можно в процессе установки клиента, как описано в данной статье, либо вручную.

В консоли Application Virtualization Client щелкните правой кнопкой мыши по Publishing Servers и выберите New.

В мастере New Publishing Server укажите тип публикации (Type) и задайте отображаемое имя (Display Name). Нажмите Next.

Укажите имя Web-сервера (Host Name) и путь к скрипту публикации (Path).

Для завершения настроек нажмите Finish.

Если для публикации приложения вы использовали переменную %SFT_MIME_SOURCE% не забудьте изменить соответствующие ключи реестра.

Теперь настало время для тестов.

Нажмите правой кнопкой мыши по созданной записи сервера публикации и нажмите Обновить Сервер (Refresh Server). Если вы правильно указали пути в файле-описателе процесс должен будет отработать без ошибок.

Кроме того, ваше опубликованное приложение должно будет появится в списке Applications. Запустите приложение, чтобы проверить корректность загрузки по протоколу HTTP.

Если на каком-то этапе у вас возникли ошибки, можете проверить журнал событий приложений.
Скорее всего, вы некорректно задали путь к .osd или .sft файлу и клиент App-V не может их обнаружить.

Последний вопрос, который осталось рассмотреть - разграничение прав на загрузку пакетов приложений с web-сервера. Предположим, что существуют приложения, которые требуется предоставлять только определенным группам пользователей. Вы, конечно, можете создать несколько разных файлов-описателей и в настройках клиента App-V задать путь к конкретному файлу, но есть и другой вариант.

Вместо анонимной аутентификации на сервере вы можете включить Integrated аутентификацию (для всего сервера, или для отдельных папок), после чего предоставить разрешения на уровне NTFS на соответствующую папку требуемому пользователю или группе (например, "App-V <Имя_приложения> Users"). Для этого в консоли IIS, выбрав нужную директорию с приложением, в секции IIS выберите Authentication. Включите (Enable) тип аутентификации Windows Authentication.

При использовании скрипта publishing.aspx, пользователь, не имея достаточных прав, просто не сможет зайти в данную папку, а значит, в созданном файле-описателе не будет информации об этом приложении. Для отмены возможности входа под анонимным пользователем достаточно удалить права у группы Users на соответствующую папку.

На этом знакомство с публикацией пакетов App-V с помощью HTTP можно считать завершенным.

вторник, 10 августа 2010 г.

Средства аудита инфраструктуры

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


Сбор общей информации об инфраструктуре

Microsoft Assessment & Planning Toolkit (MAPT) - одна из лучших утилит по инвентаризации серверов и рабочих станций в сети. Позволяет использовать различные варианты обнаружения компьютеров, включая поиск в Active Directory, через сетевое окружение, в указанном диапазоне IP адресов, импортирование имен из текстового файла.
С помощью WMI запросов к каждому компьютеру собирает необходимую информацию, включая версию и редакцию ОС, установленные программы и компоненты, аппаратную конфигурацию, сетевые настройки.

Для хранения собранных данных используется база SQL сервера (поддерживается SQL Server 2008 Express Edition).

Сильной стороной утилиты является возможность генерации различных отчетов в формате xls (по версиям ОС, сетевой или аппаратной конфигурации, установленным в организации серверам SQL и т.д.).

Active Directory Topology Diagrammer (ADTD) - утилита для построения диаграмм и схем в Visio (поддерживает Vision 2003 / 2007) на основе данных, собранных из AD.
ADTD позволяет строить диаграммы: лесов, доверительных отношений и доменов, существующей иерархии организационных подразделений, почтовых серверов Exchange и коннекторов отправителей, организации сайтов и настройки репликации.

Следующая утилита - Microsoft IT Environment Health Scanner позволяет проверить общее состояние вашей инфраструктуры. Среди проверяемых параметров:
  • Конфигурация сайтов и подсетей Active Directory.
  • Состояние репликации Active Directory с использование DFS и FRS.
  • Разрешение имен с помощью DNS.
  • Настройка сетевых адаптеров на всех контроллерах домена
  • Конфигурация серверов DNS и почтовых серверов Microsoft Exchange.
  • Ошибки в журналах событий, связанных с работой домена
Результат работы программы экспортируется в html файл.
При наличии ошибок или предупреждений в результирующий отчет также будет добавлено краткое описание проблемы и дана ссылка на статью из базы знаний Microsoft. Загрузить Microsoft IT Environment Health Scanner можно отсюда.

Для сбора информации о групповых политиках можно воспользоваться скриптами ListSOMPolicyTree.wsf и GetReportsForAllGPOs.wsf, входящими в состав Group Policy Management Console (GPMC).
ListSOMPolicyTree.wsf выводит структуру организационных подразделений Active Directory с указанием всех примененных к ним групповых политик.
GetReportsForAllGPOs.wsf генерирует отчеты в формате html по всем созданным групповым политикам в указанной папке.

Из сторонних программ неплохо себя зарекомендовала ADScribe от компании LEADUM Software. Как нетрудно догадаться, ADScribe собирает информацию об объектах каталога Active Directory (пользователях, группах, компьютерах, контактах, организационных подразделениях, принтерах), сайтах и групповых политиках и сохраняет их в виде единого справочного chm или html файла. Программа может быть запущена с любого компьютера, входящего в обследуемый домен, при наличии у пользователя соответствующих прав.
К сожалению, ADScribe несовместима с 64-разрядными ОС (проявляется в виде проблемы с регистрацией библиотеки msxml.dll). Для ознакомления доступна полнофункциональная trial версия на 15 дней.

Сбор информации о сервере
В качестве основного средства по сбору информации о конфигурации сервера можно использовать Microsoft Product Support Reports (MPSReports). MPSReports собирает подробную информацию о конфигурации и настройках сервера, включая текущую аппаратную конфигурацию, установленные программы, драйверы, службы, версии библиотек и системных файлов, сетевые настройки, вывод утилит NetDiag, DCDiag, GPResult. Дополнительно в отчет могут быть включены результаты проверки настроек системы обновлений WSUS, служб SQL и Exchange. Вся собранная информация будет упакована в один .cab архив. Для его просмотра лучше всего использовать Microsoft Product Support Reports Viewer (MPS Reports Viewer).

В Windows Server 2008 R2 также есть встроенные инструменты по анализу установленных компонентов сервера на соответствие рекомендациям (Best Practice Analyzer). BPA устанавливается вместе с той или иной ролью и доступен из оснастки Server Manager.
Для автоматизации процесса сбора информации с локального сервера вы можете выполнить приведенный ниже скрипт:
#Get-BPAResults.ps1
#v.1.0
Import-Module ServerManager
Import-Module BestPractices

$ResultDir = "C:\Temp\"

foreach ($BPAModel in Get-BpaModel)
{
$BPAinstance = $BPaModel.Id
$FileName = $BPAinstance.Substring($BPAinstance.LastIndexOf("/")+1)
Invoke-BpaModel $BPAinstance
Get-BPAResult $BPAinstance | ConvertTo-Html > ($ResultDir + $FileName + ".html")
}
Результат анализа BPA по каждой роли будет сохранен в отдельном HTML файле в папке "C:\Temp".

Заключение
Как видите существует достаточно много простых и понятных утилит для сбора информации об инфраструктуре. Их использование позволит вам получить точную информацию о текущей конфигурации серверов "из первых рук", без необходимости отрыва администраторов от производства.