Локальный диспетчер конфигураций¶
Локальный диспетчер конфигураций (Local Configuration Manager, LCM) — это компонент платформы управления конфигурациями Microsoft PowerShell Desired State Configuration (DSC), отвечающий за применение, контроль и поддержание заданного состояния узла (компьютера, сервера, виртуальной машины). LCM работает на каждом управляемом узле как фоновый процесс и выполняет инструкции, описанные в конфигурационных скриптах DSC, обеспечивая соответствие системы заданным параметрам.
¶История и развитие
LCM появился в составе PowerShell DSC, впервые выпущенного в составе Windows Management Framework 4.0 для Windows Server 2012 R2 и Windows 8.1 в 2013 году. Изначально LCM был тесно интегрирован с Windows и поддерживал только локальное выполнение конфигураций. В версии DSC 2.0 (Windows Management Framework 5.0, 2016 год) LCM получил значительные улучшения: поддержку частичных конфигураций, режимов обновления (Push и Pull), возможность работы с мета-конфигурациями и расширенную систему событий. В последующих версиях PowerShell (начиная с PowerShell 7) LCM был переработан для кроссплатформенной работы, поддерживая Linux и macOS, хотя функциональность на этих платформах ограничена по сравнению с Windows.
¶Архитектура и компоненты
LCM представляет собой набор модулей и служб, встроенных в среду PowerShell. Основные компоненты включают:
- Механизм LCM — ядро, отвечающее за цикл выполнения: получение конфигурации, проверку состояния, применение изменений и отчетность.
- Провайдеры ресурсов — модули, реализующие логику управления конкретными компонентами (файлы, реестр, службы, пакеты, пользователи и т.д.).
- Хранилище конфигураций — локальная база данных (обычно в формате MOF-файлов), где хранятся текущая и целевая конфигурации.
- Служба планировщика — в Windows используется Task Scheduler для запуска LCM по расписанию.
¶Режимы работы LCM
LCM поддерживает два основных режима управления конфигурациями:
¶Push-режим
В этом режиме администратор вручную отправляет конфигурационный файл (MOF) на целевой узел с помощью командлета Start-DscConfiguration. LCM получает конфигурацию, применяет её и сохраняет локально. Этот режим подходит для небольших сред и тестирования, не требует централизованного сервера.
¶Pull-режим
В Pull-режиме LCM периодически обращается к центральному серверу (Pull Server) для получения актуальной конфигурации. Сервер может быть реализован на основе IIS, SMB-шары или Azure Automation DSC. LCM проверяет наличие новой версии конфигурации, загружает её и применяет. Этот режим обеспечивает централизованное управление и автоматическое обновление конфигураций на множестве узлов.
¶Мета-конфигурация LCM
LCM управляется через мета-конфигурацию — специальный блок параметров, который задаётся в конфигурационном скрипте DSC. Основные настройки мета-конфигурации включают:
- RefreshMode — определяет режим обновления: Push или Pull.
- ConfigurationMode — задаёт поведение при обнаружении расхождения: ApplyOnly (только применить), ApplyAndMonitor (применить и мониторить), ApplyAndAutoCorrect (автоматически исправлять).
- ConfigurationModeFrequencyMins — частота проверки состояния (по умолчанию 15 минут).
- RefreshFrequencyMins — частота проверки наличия новой конфигурации на Pull-сервере (по умолчанию 30 минут).
- AllowModuleOverwrite — разрешает перезапись модулей ресурсов при обновлении.
- RebootNodeIfNeeded — автоматическая перезагрузка узла, если это требуется для применения конфигурации.
- ActionAfterReboot — действие после перезагрузки: ContinueConfiguration (продолжить) или StopConfiguration (остановить).
¶Цикл выполнения LCM
LCM работает по следующему алгоритму:
- Получение конфигурации — загрузка MOF-файла из локального хранилища или с Pull-сервера.
- Проверка состояния — LCM сравнивает текущее состояние системы с целевым, описанным в конфигурации. Для каждого ресурса вызывается метод
Test-TargetResource. - Применение изменений — если состояние не соответствует целевому, LCM вызывает метод
Set-TargetResourceдля каждого ресурса, который требует изменений. - Отчётность — после завершения цикла LCM генерирует отчёт о состоянии (через
Get-DscConfigurationStatus), который может быть отправлен на Pull-сервер или сохранён локально. - Планирование — в зависимости от настроек, цикл повторяется с заданной периодичностью.
¶Применение
LCM используется в следующих сценариях:
- Автоматизация развёртывания — настройка серверов после установки ОС, установка ролей и компонентов Windows.
- Управление конфигурациями — поддержание единообразных настроек на множестве узлов (например, параметры безопасности, реестр, службы).
- Обновление программного обеспечения — установка и обновление пакетов, управление версиями.
- Мониторинг соответствия — периодическая проверка и автоматическое исправление отклонений от заданного состояния.
- Интеграция с DevOps — использование в пайплайнах CI/CD для настройки сред тестирования и продакшена.
¶Ограничения и особенности
- LCM требует прав администратора на узле для выполнения операций.
- В кроссплатформенной версии (PowerShell 7) поддержка ресурсов ограничена: доступны только базовые провайдеры (файлы, процессы, пакеты), а Windows-специфичные (реестр, службы, IIS) недоступны.
- LCM не поддерживает параллельное выполнение конфигураций на одном узле — все ресурсы обрабатываются последовательно.
- Для работы в Pull-режиме требуется настройка и поддержка Pull-сервера, что увеличивает сложность инфраструктуры.
- При использовании режима
ApplyAndAutoCorrectвозможны частые перезагрузки, если конфигурация требует их для применения.
¶Интересные факты
- LCM может работать в «песочнице» (Sandbox) для тестирования конфигураций без воздействия на реальную систему, используя параметр
-Waitи-Forceв командлетах. - В Windows Server 2016 и новее LCM интегрирован с Desired State Configuration (DSC) для Azure, что позволяет управлять гибридными средами.
- Существует возможность создавать собственные ресурсы DSC, расширяющие функциональность LCM, на любом языке, поддерживающем PowerShell (C#, Python, Node.js).
¶Источники
- Microsoft Docs: «Windows PowerShell Desired State Configuration Overview»
- Microsoft Docs: «Configuring the Local Configuration Manager»
- PowerShell Team Blog: «DSC Local Configuration Manager (LCM)»
- TechNet Magazine: «Understanding PowerShell DSC LCM»
- «PowerShell Desired State Configuration» by Ravikanth Chaganti (2015)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


