Введение
Программное обеспечение для управления конфигурацией
CFEngine — это система управления конфигурацией, разработанная Марком Берджессом. Её основная функция — автоматизированная настройка и обслуживание больших компьютерных систем, включая унифицированное управление серверами, настольными компьютерами, потребительскими и промышленными устройствами, встроенными сетевыми устройствами, мобильными смартфонами и планшетными компьютерами. Распространяется по лицензии GNU General Public License, что делает CFEngine свободным программным обеспечением.
История
Проект CFEngine начался в 1993 году как способ для автора Марка Берджесса (тогда постдокторанта Королевского общества в Университете Осло, Норвегия) выполнять свою работу, автоматизировав управление небольшой группой рабочих станций в Департаменте теоретической физики. Берджесс управлял рабочими станциями Unix, вручную создавал скрипты и устранял неполадки для пользователей. Написание скриптов занимало слишком много времени, различные версии Unix значительно отличались, и скрипты требовали поддержки для множества платформ, утопая в логике обработки исключений. После обсуждения проблем с коллегой, Берджесс написал первую версию CFEngine (движка конфигурации), которая была опубликована в виде внутреннего отчета и представлена на вычислительной конференции CERN. Она привлекла значительное внимание со стороны более широкого сообщества, поскольку скрывала различия между платформами, используя предметно-ориентированный язык. Год спустя Берджесс завершил свою постдокторантуру, но решил остаться в Осло и устроился преподавателем в Университетский колледж Осло. Там он понял, что исследований в области управления конфигурацией практически не ведется, и приступил к применению принципов научного моделирования для понимания компьютерных систем. Он разработал концепцию конвергентных операторов, которая остается основой CFEngine. В 1998 году Берджесс написал статью "Компьютерная иммунология", представленную на конференции USENIX/LISA98. В ней был изложен манифест о создании самовосстанавливающихся систем, который несколько лет спустя IBM повторила в своей концепции автономных вычислений. Это положило начало исследовательской работе, которая привела к масштабной переработке – CFEngine 2, добавившей функции машинного обучения, обнаружения аномалий и безопасной связи. В период с 1998 по 2004 год CFEngine рос в популярности вместе с ростом популярности Linux как вычислительной платформы. В это время Марк Берджесс разработал теорию обещаний – модель распределенного сотрудничества для автоматизации самовосстановления. В 2008 году, после более чем пяти лет исследований, был представлен CFEngine 3, который включал теорию обещаний как "способ сделать CFEngine одновременно проще и мощнее", по словам Берджесса. CFEngine 3 – самая значительная переработка проекта на сегодняшний день – также интегрировала механизмы управления знаниями и обнаружения, позволяющие масштабировать управление конфигурацией для автоматизации инфраструктуры корпоративного уровня. В июне 2008 года компания CFEngine AS была основана в результате сотрудничества между автором Марком Берджессом, Университетским колледжем Осло и Инновационным центром Осло для поддержки пользователей CFEngine. В апреле 2009 года компания выпустила первую коммерческую версию CFEngine – CFEngine Enterprise. Enterprise-версия может быть загружена бесплатно для использования с до 25 агентов (клиентов). В феврале 2011 года компания получила первый раунд финансирования от FERD Capital. Компания имеет офисы в Осло, Норвегия, и Маунтин-Вью, Калифорния, США. В 2017 году компания сменила название на Northern.tech, чтобы отразить тот факт, что она работает над несколькими программными продуктами, а не только над CFEngine.
Дизайн
Одна из основных идей CFEngine заключается в том, что изменения в конфигурации компьютера должны выполняться конвергентно. Это означает, что каждая операция изменения, выполняемая агентом, должна приводить к устойчивому состоянию. Вместо описания шагов, необходимых для внесения изменений, язык CFEngine описывает желаемое конечное состояние. Затем агент обеспечивает выполнение необходимых действий для достижения этого "состояния, соответствующего политике". Таким образом, CFEngine можно запускать многократно, независимо от начального состояния системы, и он всегда будет приводить к предсказуемому результату. CFEngine поддерживает концепцию статистического соответствия политике, подразумевающую, что система не может гарантировать точное соответствие идеальному или желаемому состоянию, а лишь стремится (конвергирует) к нему, прилагая все усилия, со скоростью, определяемой соотношением между частотой изменений в среде и частотой выполнения CFEngine. CFEngine предоставляет операционно-независимый интерфейс для настройки хостов, подобных Unix. Для работы с особенностями различных операционных систем требуются определенные знания, но он позволяет выполнять операции обслуживания на множестве хостов. CFEngine также может использоваться на хостах Windows и широко применяется для управления большим количеством Unix-хостов с различными операционными системами, такими как Solaris, Linux, AIX, Tru64 и HP UX.
Пользователи
CFEngine используется как в крупных, так и в небольших компаниях, а также во многих университетах и государственных учреждениях. Самый крупный известный центр обработки данных, управляемый с помощью CFEngine, насчитывает более миллиона серверов, а о площадках размером до 40 000 машин публично сообщается (LinkedIn). Площадки, состоящие из нескольких тысяч хостов, работающих под управлением CFEngine, встречаются довольно часто. По данным статистики CFEngine AS, по всему миру, вероятно, несколько миллионов компьютеров работают под управлением CFEngine, и пользователи зарегистрированы более чем из 100 стран.
Исследования
Вскоре после своего появления CFEngine послужил толчком к развитию исследований в области автоматизированного управления конфигурациями. Проект CFEngine заявляет о стремлении представить проблему управления конфигурациями в научном ключе. Его автор, Марк Берджесс, разработал ряд теоретических инструментов и результатов для анализа этой проблемы, а также написал несколько учебников и монографий, посвященных их объяснению.