CFEngine

CFEngine — система управления конфигурациями, разработанная Марком Бёрджессом. Основное назначение CFEngine — автоматизация конфигурирования и обслуживания крупных вычислительных систем, включая централизованное управление серверами, настольными компьютерами, потребительскими и промышленными устройствами, встраиваемыми сетевыми устройствами, мобильными смартфонами и планшетами.

CFEngine распространяется по условиям лицензии GNU GPL, являясь свободным программным обеспечением.

Общие сведения

История

Разработка CFEngine началась в 1993 году, когда автор Марк Бёрджесс, тогда постдоктор Королевского общества в Университете Осло (Норвегия), занимался автоматизацией управления группой рабочих станций в отделе теоретической физики. Бёрджесс вручную управлял Unix-станциями, писал скрипты и исправлял проблемы пользователей. Сложности поддержания скриптов для множества различных платформ и их разнообразия привели к необходимости автоматизации — после обсуждения с коллегой Бёрджесс создал первую версию CFEngine («configuration engine»), опубликованную в виде внутреннего отчёта[5] и представленной на вычислительной конференции CERN. Широкое внимание проект получил благодаря применению предметно-ориентированного языка, скрывавшего различия платформ.

Через год после старта, завершив постдок, Бёрджесс остался в Осло и начал преподавать в Университетском колледже Осло. Здесь он заметил отсутствие серьёзных исследований в области управления конфигурациями и начал применять принципы научного моделирования для понимания вычислительных систем. Именно тогда была сформулирована концепция конвергентных операторов, которая остаётся центральной идеей CFEngine.

В 1998 году Бёрджесс опубликовал работу «Computer Immunology» на конференции USENIX/LISA98[6], где изложил манифест создания самовосстанавливающихся систем, впоследствии переосмысленный IBM в концепции автономных вычислений. Этот труд положил начало исследованию, которое привело к существенной переработке — появлению CFEngine 2, в котором появились возможности машинного обучения, обнаружения аномалий и защищённой коммуникации.

С 1998 по 2004 год распространённость CFEngine росла вместе с популярностью Linux. В этот период Бёрджесс разработал теорию обещаний, модель распределённого взаимодействия для самовосстанавливающейся автоматизации[7].[8] В 2008 году, после более чем пяти лет исследований, была представлена версия CFEngine 3, в которой теория обещаний использовалась для одновременного упрощения и расширения возможностей. Это стало наиболее серьёзной переработкой, позволив интегрировать механизмы управления знаниями и автоматического обнаружения — теперь CFEngine позволял масштабировать управление конфигурацией вплоть до инфраструктуры корпоративного уровня.

В июне 2008 года была создана компания CFEngine AS совместно с Марком Бёрджессом, Университетским колледжем Осло и Центром инноваций Осло для поддержки пользователей CFEngine. В апреле 2009 года компания запустила коммерческую версию — CFEngine Enterprise, её можно бесплатно использовать до 25 агентов (клиентов). В феврале 2011 года компания получила первый инвестиционный раунд от FERD Capital[9]. Офисы компании расположены в Осло (Норвегия) и Маунтин-Вью (Калифорния, США).

В 2017 году компания сменила название на Northern.tech, чтобы отразить ориентацию на несколько программных продуктов, а не только на CFEngine[10].

Архитектура и принципы работы

Одна из ключевых идей CFEngine — внесение изменений в конфигурацию системы должно происходить конвергентным образом[11][12]. Это значит, что каждое изменение системой трактуется как достижение некоторой «фиксированной точки». Вместо описания последовательности действий CFEngine использует язык описания желаемого конечного состояния: агент CFEngine автоматически предпринимает шаги для достижения «соответствия политике». Программа может запускаться многократно — независимо от начального состояния — и каждый раз приводит систему к предсказуемому результату. Таким образом обеспечивается статистическая соответствие политике: гарантировать точное совпадение с идеалом невозможно, но система стремится к желаемому состоянию с точностью, зависящей от частоты изменений окружения и скорости работы CFEngine[13].

CFEngine предоставляет независимый от операционной системы интерфейс для настройки Unix-подобных хостов. Для учёта специфики разных ОС требуется определённая экспертиза, но система способна выполнять обслуживание многих хостов сразу. CFEngine также работает под Windows и широко применяется для автоматизации крупных и разнородных Unix-инфраструктур, таких как Solaris, Linux, AIX, Tru64 и HP-UX.

Пользователи

CFEngine применяется как в малых, так и в крупных компаниях, а также в университетах и государственных организациях. По заявлениям разработчиков, крупнейший зарегистрированный дата-центр, управляемый CFEngine, превышает миллион серверов, а случаи использования на 40 000 машин (например, в LinkedIn[14]) задокументированы публично, систем с несколькими тысячами хостов тоже очень много. По оценке компании CFEngine AS, по всему миру этим ПО управляют, вероятно, несколько миллионов компьютеров, пользователи зафиксированы более чем в 100 странах.

Исследования

Практически сразу после появления CFEngine стал объектом научных исследований в области автоматизации управления конфигурациями. Создатели проекта ставят целью формализацию задач управления конфигурациями в научной парадигме. Марк Бёрджесс разработал широкий спектр теоретических моделей и опубликовал несколько монографий и учебных курсов по теме.

Примечания

Ссылки