Открыть сервис

Локальный диспетчер конфигураций

Локальный диспетчер конфигураций (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 работает по следующему алгоритму:

  1. Получение конфигурации — загрузка MOF-файла из локального хранилища или с Pull-сервера.
  2. Проверка состояния — LCM сравнивает текущее состояние системы с целевым, описанным в конфигурации. Для каждого ресурса вызывается метод Test-TargetResource.
  3. Применение изменений — если состояние не соответствует целевому, LCM вызывает метод Set-TargetResource для каждого ресурса, который требует изменений.
  4. Отчётность — после завершения цикла LCM генерирует отчёт о состоянии (через Get-DscConfigurationStatus), который может быть отправлен на Pull-сервер или сохранён локально.
  5. Планирование — в зависимости от настроек, цикл повторяется с заданной периодичностью.

Применение

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 →