Использование PowerShell DSC для развертывания пакетов обновлений

Опубликовано: 18 Марта, 2023

Введение

Администраторы сетей на основе Windows Server часто используют сценарии для автоматизации сложных задач, которые требуют ряда тщательно выполненных утомительных шагов для успешной настройки и управления различными аспектами своей среды. Одним из новых мощных инструментов в наборе инструментов администратора для достижения этой цели является Windows PowerShell Desired State Configuration (DSC), новая платформа управления, впервые представленная в Windows PowerShell 4.0, которая упрощает развертывание и управление данными конфигурации для служб, а также управление средой, в которой работают такие службы.. Чтобы помочь нашим читателям понять некоторые возможности, доступные для них в DSC, я попросил коллегу Microsoft MVP Десмонда Ли подробно показать, как можно использовать DSC для упрощения и автоматизации задачи по распространению пакетов обновлений.msu в среде Windows.. Десмонд специализируется на комплексной корпоративной инфраструктуре и инновационных облачных решениях, построенных на проверенных бизнес-процессах, эффективном управлении проектной командой и интеграции людей в различных отраслях по всему миру. Он был признан самым ценным профессионалом Microsoft (MVP Skype для бизнеса) за свою преданную страсть и многолетнюю волонтерскую работу в ИТ-сообществе. Десмонд имеет степень магистра. из Университетского колледжа Лондона (UCL) и является сертифицированным SVEB тренером, коучем и основателем Swiss IT Pro User Group (www.swissitpro.ch), независимая некоммерческая организация для ИТ-специалистов, созданная ИТ-специалистами, отстаивающими Microsoft и связанные с ней технологии. Десмонд также является признанным автором и спикером на крупных международных и региональных мероприятиях, известным своим пониманием реального мира с более чем 20-летним практическим опытом, и часто участвует в нескольких высоко оцененных публикациях и участвует в качестве модератора в популярных общественных форумах Microsoft / группы новостей. Вы можете следить за его ИТ-приключениями наwww.leedesmond.com

Сценарий

Конфигурация желаемого состояния (DSC) была впервые представлена в PowerShell 4.0 и является встроенной версией как в Windows 8.1, так и в Windows Server 2012 R2. Эта платформа управления системой, основанная на стандартах, открывает совершенно новый мир возможностей в администрировании разнородных платформ, от Linux до сред рабочих групп и доменов Active Directory.

Представьте на мгновение, что вы являетесь системным администратором и намереваетесь перейти на PowerShell 5.0 путем установки RTM-версии Windows Management Framework 5.0 (повторно выпущенной 24 февраля 2016 г.). Типичным подходом является ручная загрузка и установка исполняемого файла WMF5 по щелчку мыши, который поставляется в виде пакета обновления.msu. Файлы с такими расширениями имен связаны с автономным установщиком Центра обновления Windows (wusa.exe), расположенным в папке %windir%System32.

Для администраторов, которым необходимо поддерживать несколько серверов в организации, службы Windows Server Update Services (WSUS), Intune или сторонние решения могут быть уже развернуты. Эти методы развертывания исправлений, исправлений и обновлений зависят от доступности правильной инфраструктуры, помимо соображений лицензирования. Они испытаны и проверены и будут продолжать служить своей цели в обозримом будущем.

Альтернативный подход заключается в использовании DSC для достижения аналогичных целей, будь то малобюджетная простая лабораторная установка или крупномасштабное корпоративное развертывание. Думайте о DSC как о бесплатном самодельном агенте, который поставляется как часть PowerShell во всех поддерживаемых версиях Windows. Магия выполняется тем, что называется ресурсом («исполнителем»), где ряд часто используемых функций или сценариев предоставляется в модуле PSDesiredStateConfiguration. DSC будет автоматически обеспечивать соответствие на узлах целевой машины и поддерживать идемпотентность при обнаружении отклонения от нормы. Параметры конфигурации желаемого состояния могут быть развернуты с помощью механизма Pull или Push. Поскольку последний больше связан с дополнительными аппаратными и программными требованиями, в этой статье мы сосредоточимся на использовании более простой схемы Push.

Решение

Начнем с проверки локальных ресурсов DSC с помощью Get-DscResource. Из приведенного вывода вы узнали, что ваша попытка установить WMF5 не может быть удовлетворена ни одним из встроенных ресурсов. Обратив ваше внимание на Find-DscResource, мы обнаружили, что ресурс xMicrosoftUpdate в модуле xWindowsUpdate, который можно получить как часть репозитория PowerShell Gallery PSGallery, действительно соответствует нашим целям.

Затем вы можете выбрать загрузку, сохранение или прямую установку модуля xMicrosoftUpdate на исходную административную рабочую станцию с помощью Install-Module. Теперь вы почти готовы приступить к написанию блока DSC начальной декларативной конфигурации в PowerShell.

Но ждать! Как получить пакет.msu, скажем, с внутреннего веб-сервера или сетевой папки SMB, на узлы назначения? Кроме того, ресурс xHotfix DSC (в модуле xMicrosoftUpdate) обязателен для выполнения фактического обновления исправления и вряд ли будет присутствовать на удаленных компьютерах. Ваша компания применяет передовую отраслевую практику, когда серверы не имеют прямого доступа в Интернет, поэтому этот метод веб-загрузки исключен.

Вы заметили, что локальный ресурс File DSC является возможным кандидатом на это назначение. Напомним, что DSC работает в контексте учетной записи ЛОКАЛЬНАЯ СИСТЕМА без возможности доступа к сети за пределами самого хоста. Одним из способов обхода этого ограничения безопасности является тщательное предоставление разрешений на доступ к файловому ресурсу, содержащему.msu и модуль xMicrosoftUpdate, всем учетным записям удаленных компьютеров (целевым узлам DSC). Эта тактика описана в разделе «Копирование модулей PowerShell и пользовательских ресурсов DSC с помощью DSC».

Гораздо проще передать необходимые файлы по сети, используя гибкий ресурс Script DSC, как показано на рисунке 1.

фигура 1

Как видите, код довольно прост и не требует пояснений, а фактическая копия файла выполняется в строках 44-45 на рис. 1. Тем не менее, вам нужно будет настроить правильные учетные данные и передать их в New-PSDrive в случае что сетевая папка защищена от доступа. Потенциально вы можете пропустить сопоставление дисков и выполнить операцию копирования непосредственно с путем UNC общей сетевой папки. Это при условии, что последний разрешает анонимный доступ или участвующие машины являются частью доменной сети Active Directory с соответствующими правами доступа.

Обратите внимание, что файлы, составляющие модуль xWindowsUpdate, копируются прямо по пути, указанному в переменной $pathtargetModule. Автоматическое обнаружение и загрузка модулей будут происходить до тех пор, пока они будут помещены в эту или одну из других папок, как определено в $env:PSModulePath.

Очевидно, что сохранение имени пользователя и пароля в виде обычного текста является здесь одним из основных недостатков. Кроме того, вам, возможно, придется обрабатывать возможные ошибки, возникающие из-за недоступности произвольно выбранной буквы сетевого диска. Чтобы избежать этого, рассмотрите возможность запуска Get-WmiObject для перечисления типов дисков и связанных с ними букв, которые уже используются.

На этом этапе все, что вам нужно сделать, это собрать все вместе в декларативном блоке кода конфигурации, чтобы получить рис. 2 (шаг 1):

фигура 2

Чтобы сгенерировать текстовый файл формата управляемых объектов (.mof), просто вызовите DscWMF5CopyFiles (имя блока конфигурации) с необходимыми параметрами. Обратите внимание, что блок конфигурации ведет себя точно так же, как обычная функция.

Предполагая, что предварительные условия для удаленной цели DSC выполнены, а именно удаленное взаимодействие PowerShell и.NET Framework 4.5 или более поздней версии, теперь вы можете передать параметры конфигурации, выполнив следующее:

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

Примечание:
Перед отправкой конфигурации необходимо удалить следующие записи из.mof, если файл создается на компьютере с PowerShell 5.0 или Windows Management Framework 5.0, предназначенном для более старой установки PowerShell/WMF, чтобы избежать ошибок (не)совместимости во время выполнения.:

Теперь, после успешной передачи необходимых файлов на целевые узлы через DscWMF5CopyFiles, следующим шагом будет подготовка отдельного блока конфигурации DSC для описания фактических желаемых параметров развертывания (и сохранения) WMF5, как показано на рисунке 3:

Рисунок 3

Затем мы можем приступить к созданию файла MOF (шаг 2), прежде чем дать PowerShell указание инициировать фактическое развертывание WMF5 (шаг 3). Для того чтобы DSC применил указанную конфигурацию, эти сценарии должны быть развернуты вместе; Листинг 1, показанный в следующем разделе ниже, помогает установить зависимости (.msu и модуль xWindowsUpdate), а листинг 2 определяет детали реализации. Повторное выполнение этих шагов требуется только в том случае, если в работу вступают новые машины, серверы выводятся из эксплуатации или, например, обновляется путь к сетевому файловому ресурсу.

Заметки:
Вам может быть интересно, почему блоки xHotfix и Script не упакованы вместе в один и тот же блок конфигурации, например DscWMF5Rollout или DscWMF5CopyFiles. Если на узлах назначения уже не установлен модуль xWindowsUpdate, при выполнении Start-DscConfiguration будет создано сообщение об ошибке:

Таким образом, сохранение разделов кода xHotfix и Script в отдельных блоках конфигурации имеет важное значение для обеспечения того, чтобы зависимости можно было поддерживать, но управлять ими по отдельности.

Кроме того, хотя некоторые исправления и исправления требуют перезагрузки компьютера для завершения установки, хорошо, что отправка обновлений через DSC не просто запускает автоматический перезапуск без вмешательства администратора. По умолчанию для локального диспетчера конфигураций (LCM, буквально агент «сделай так») установлено значение false в отношении RebootNodeIfNeeded. С осторожностью вы можете перезаписать это поведение с помощью Set-DscLocalConfigurationManager в удаленном сеансе CIM.

Листинг 1

Листинг 2

Вывод

В этой статье вы узнали, насколько просто выталкивать пакеты обновлений.msu с помощью ресурсов Script и xWindowsUpdate DSC без сложной, трудоемкой настройки или дорогостоящих инвестиций. После успешного развертывания постоянной обязанностью LCM является поддержание «статус-кво» на удаленных целевых объектах DSC без дальнейшего участия администратора. Используя примеры блоков кода декларативной конфигурации в качестве отправной точки, вы должны быть уверены, что сможете собрать вместе необходимые части для эффективного развертывания обновлений и обеспечения стандартизации ваших компьютеров.