Автоматизация упаковки приложений с помощью PowerShell
Упаковка корпоративных программных приложений для развертывания — это то, из-за чего многие администраторы могут не спать по ночам, уставившись в потолок. Современные корпоративные приложения часто представляют собой большие, сложные облачные приложения, установка которых сильно отличается от, скажем, установки WinZip в Windows 95. Одним из пакетов программного обеспечения, который вызывает разочарование у некоторых администраторов, является Adobe Creative Cloud, который предоставляет пользователям полная коллекция настольных и мобильных приложений Adobe, начиная от базовых, таких как Photoshop CC, и заканчивая инструментами нового поколения, такими как Adobe XD CC. Чтобы помочь нам решить проблему автоматизации упаковки Adobe Creative Cloud для развертывания с помощью System Center Configuration Manager (SCCM), я попросил Марка Ван Ноя поделиться с нашими читателями некоторыми из своих с трудом заработанных знаний. Марк является техническим руководителем/архитектором в Университете Колорадо в Боулдере в районе Большого Денвера, и как специалист широкого профиля в области информационных технологий он преуспевает в разработке новых инструментов и услуг таким образом, чтобы его клиенты могли добиться повышения эффективности, производительности и экономии средств. при этом гарантируя, что ИТ останется подразделением, обеспечивающим конкурентное преимущество. Для получения дополнительной информации о Марке вы можете проверить его на LinkedIn. Давайте прямо сейчас приложим уши к стене и послушаем, как Марк объясняет, как он и его команда использовали Windows PowerShell для решения, казалось бы, почти непреодолимой проблемы упаковки приложений: как полностью автоматизировать упаковку Adobe Creative Cloud вместе с лицензиями на устройства. для запланированного развертывания программного обеспечения.
Полная автоматизация упаковки Adobe Creative Cloud с лицензиями на устройства
Adobe CC позволяет индивидуально упаковывать отдельные приложения Creative Cloud, а также весь пакет с использованием лицензионного ключа корпоративного устройства. Хотя у Adobe есть рекомендации по автоматизации, поэтому администраторам программного обеспечения не нужно пошагово использовать инструмент упаковки с графическим интерфейсом, PDapp, XML-файл конфигурации для автоматизации необходимо обновлять вручную для нетривиальных сценариев упаковки. Университет Колорадо в Боулдере разработал сценарий PowerShell для автоматизации создания файлов конфигурации XML, чтобы процесс упаковки Adobe CC был автоматизирован в самых разных сценариях.
Какую именно проблему необходимо решить?
Adobe отлично справляется с предоставлением документации по автоматизации упаковки приложений Creative Cloud. Документация Adobe довольно хороша, и они делают процесс довольно простым, если все, что нужно сделать человеку, — это предоставить один большой пакет всех продуктов Adobe Creative Cloud, которые являются последней версией. Если необходимо упаковать отдельные продукты или подгруппы продуктов, это также можно сделать, настроив более сложный XML-файл. Adobe даже включает схему XSD своего формата XML для тех, кто хочет полностью понять грамматику XML, используемую Creative Cloud Packager.
Чего Adobe не предоставляет, так это автоматизированного способа получения номеров версий для приложений, когда подмножество приложений упаковывается, несмотря на необходимость предоставления версии. Например, если компания хочет упаковать Illustrator и Photoshop вместе, то оба номера версий продуктов должны быть предоставлены в XML. Эти номера версий в настоящее время можно найти на этом отдельном веб-сайте Adobe. Это оставляет проблему необходимости вручную редактировать файлы конфигурации XML с номерами версий после ручного поиска номеров версий, чтобы автоматизировать процесс упаковки. Файлы конфигурации XML экономят время, затрачиваемое на просмотр графического интерфейса, но ручное изменение XML по-прежнему является пустой тратой времени из-за подверженного ошибкам ввода данных.
Упаковка приложения: Свет в конце туннеля
Путем небольшого эксперимента мы обнаружили, что отдельные приложения CC могут быть упакованы по одному, при этом они функционируют так, как если бы они были упакованы вместе, если они используют один и тот же лицензионный ключ устройства. Возможность упаковки каждого приложения по отдельности без создания уникальных пакетов не только упрощает решение проблемы, но и существенно сокращает количество пакетов, которые может потребоваться создать. Если я помню свою дискретную математику, а я, наверное, нет, то их 17! комбинации пакетов, которые могут быть запрошены. Кстати, это факториал семнадцать (1x2x3x4x5x6x7x8x9x10x11x12x13x14x15x16x17), а не 17 с восклицательным знаком! Но не более 17 пакетов, когда-либо нуждающихся в упаковке, могут быть заскриптованы!
Сценарий PowerShell, который мы разработали
ИТ-группа Университета Колорадо в Боулдере приступила к написанию сценария PowerShell, который автоматизирует изменение основного файла конфигурации XML. Затем измененный XML-файл передается в Creative Cloud Packager, PDapp.exe, посредством пакетного файла CMD. Поскольку пакетный файл связывает вместе различные комбинации приложений, которые необходимо упаковать, все, что нужно сделать администратору пакета, — это запустить файл CMD, а затем он может делать что-то еще во время создания пакетов. Вы можете загрузить zip-архив, содержащий файлы ps1, XML и cmd, здесь: AdobeCC.zip.
Связующим звеном, скрепляющим процесс, является сценарий PowerShell. Сценарий сначала запрашивает веб-сайт Adobe, на котором перечислены версии продуктов и их код SAP. Таблица продуктов преобразуется из строк HTML в объекты PowerShell. Создавая табличные значения из объектов веб-страницы PowerShell, данные продукта для каждого приложения хранятся вместе, поэтому данный код SAP знает, какая версия продукта должна быть и какое у него название продукта.
Затем используется собственная обработка XML PowerShell путем чтения шаблона конфигурации XML. В данном случае мы создали основной XML-файл, содержащий все коды продуктов и версии с веб-сайта Adobe. Когда указан один продукт, сценарий гарантирует, что номер версии продукта, который ранее был проанализирован с веб-сайта Adobe, записан в XML. Затем все остальные продукты удаляют узлы XML. Исключение составляет случай, когда указан весь набор продуктов, и в этом случае все узлы продуктов удаляются, поскольку весь набор является особым случаем с определенным узлом XML. После завершения модификации XML изменения записываются в новый XML-файл, который можно передать в PDapp.exe.
Сценарий, который мы придумали, имеет некоторые дополнительные функции, такие как возможность переопределить имя пула устройств шаблона XML, чтобы отдельное приложение можно было упаковать с использованием пользовательского пула устройств. Эти функции задокументированы самим сценарием, а также парой примеров использования. Стандартная справка PowerShell Get-Help.Automate-AdobeCCPacakging.ps1 -full откроет встроенную документацию по сценариям.