Введение
Конфигурация (Configuration) в контексте информационных технологий – это совокупность всех параметров, настроек, переменных окружения и свойств программной системы, аппаратного обеспечения или сетевого устройства, определяющих его функциональное поведение в конкретной среде эксплуатации. Конфигурация отвечает на вопрос «как именно работает эта система», в отличие от кода, отвечающего на вопрос «что система делает».
Управление конфигурациями (Configuration Management, CM) – дисциплина, обеспечивающая контроль над изменениями конфигурационных элементов на протяжении всего жизненного цикла системы. Является ключевой практикой как в рамках ITSM (ITIL), так и в DevOps-методологии.
История и контекст
Управление конфигурациями пришло в ИТ из военной и аэрокосмической промышленности, где контроль над изменениями сложных систем был критичен для безопасности. Стандарт военной конфигурации MIL-HDBK-61 заложил основы дисциплины в 1990-х годах.
В ИТ Configuration Management стал частью фреймворка ITIL v2 (2000-е годы), введя понятие CMDB (Configuration Management Database) – базы данных конфигурационных элементов. Параллельно в разработке ПО появились инструменты управления конфигурациями: Puppet (2005), Chef (2009), Ansible (2012), SaltStack. Концепция Infrastructure as Code (IaC) сделала управление конфигурациями программируемым и версионируемым, интегрировав его в CI/CD-пайплайны.
Как это работает
Управление конфигурациями включает несколько практик:
- Идентификация конфигурационных элементов (CI): классификация всех компонентов системы (серверы, ПО, сетевые устройства, документация) как управляемых объектов.
- Контроль изменений конфигураций: формализованные процессы внесения изменений с проверкой и утверждением (Change Advisory Board в ITIL).
- Учёт состояния конфигураций: CMDB как единый источник истины о текущем состоянии всех CI и истории их изменений.
- Аудит конфигураций: регулярная проверка соответствия фактической конфигурации задокументированному «golden standard».
- Infrastructure as Code: описание конфигурации инфраструктуры в виде декларативных файлов (Ansible playbooks, Terraform HCL, Kubernetes manifests), хранимых в системе контроля версий.
Где применяется
- DevOps и CI/CD: автоматическое управление конфигурациями серверов (Ansible, Puppet, Chef), контейнерных сред (Kubernetes ConfigMaps, Helm charts).
- ITSM: CMDB в ServiceNow, BMC Helix хранит конфигурации всех ИТ-активов и их взаимосвязи для управления инцидентами и изменениями.
- Сетевые устройства: конфигурации маршрутизаторов, коммутаторов и файерволов версионируются в системах типа RANCID или Oxidized.
- Приложения: разделение конфигурации и кода – 12-factor app методология требует хранить конфигурацию в переменных окружения, а не в коде.
- ИБ и соответствие: CIS Benchmarks и STIG определяют «золотые конфигурации» для безопасной настройки ОС, баз данных и сетевых устройств.
Преимущества и ограничения
Преимущества: воспроизводимость среды (dev/staging/prod идентичны), быстрый откат изменений, обнаружение несанкционированных изменений, соответствие регуляторным требованиям, ускорение развёртывания через автоматизацию.
Ограничения: значительные первоначальные инвестиции в настройку CM-процессов, необходимость поддержания актуальности CMDB (часто устаревает), сложность в гетерогенных средах, «Configuration Drift» – постепенное расхождение фактических настроек с задокументированными.
Связь с другими понятиями
Configuration Management тесно связан с CMDB (Configuration Management Database) – хранилищем конфигурационных данных. В DevOps-контексте IaC (Infrastructure as Code) является современным воплощением CM. Configuration Drift – нежелательное постепенное расхождение конфигурации с эталонным состоянием, обнаруживаемое инструментами типа Chef InSpec. GitOps применяет принципы version control к управлению конфигурациями Kubernetes. Тесно связан с ITSM-процессами управления изменениями и непрерывной интеграцией (CI).