Что такое Configuration Management?

«Что такое Configuration Management?» — вопрос из категории Архитектура и DevOps-практики, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Configuration Management (CM, управление конфигурацией) — это практика автоматизации и контроля за состоянием инфраструктуры (серверов, сетевых устройств, приложений) с целью обеспечения её идемпотентности, воспроизводимости и согласованности. В DevOps CM реализуется через принцип Infrastructure as Code (IaC).

Основные инструменты и их подходы:

  • Ansible (Push-модель, агентов не требуется): Использует декларативные YAML-плейбуки.
  • Puppet/Chef (Pull-модель, требует агента): Используют собственные декларативные языки (DSL) для описания желаемого состояния.
  • Terraform (Provisioning): Хотя часто относится к IaC, специализируется на провижининге облачных ресурсов, а не на их тонкой настройке.

Пример задачи в Ansible (обеспечение установки пакета и запуска сервиса):

- name: Configure web server
  hosts: webservers
  become: yes
  tasks:
    - name: Ensure nginx is installed
      apt:
        name: nginx
        state: latest
        update_cache: yes

    - name: Ensure nginx service is running and enabled
      systemd:
        name: nginx
        state: started
        enabled: yes

    - name: Deploy custom nginx config
      template:
        src: templates/nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: restart nginx

  handlers:
    - name: restart nginx
      systemd:
        name: nginx
        state: restarted

Ключевые преимущества Configuration Management:

  • Устранение дрейфа конфигурации: Все серверы в одном состоянии.
  • Скорость и масштабируемость: Быстрое развертывание идентичных сред.
  • Версионность и аудит: Все изменения отслеживаются в системе контроля версий (Git).
  • Восстановление после сбоев: Инфраструктуру можно быстро воссоздать с нуля.