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 стал объектом научных исследований в области автоматизации управления конфигурациями. Создатели проекта ставят целью формализацию задач управления конфигурациями в научной парадигме. Марк Бёрджесс разработал широкий спектр теоретических моделей и опубликовал несколько монографий и учебных курсов по теме.

Примечания

  1. CFEngine Team & Community. CFEngine 3.25.0 released (англ.). Northern.tech AS.. Дата обращения: 28 июля 2024. Архивировано 22 июня 2025 года.
  2. CFEngine Team & Community. CFEngine 3.24.2 released (англ.). Northern.tech AS.. Дата обращения: 28 июля 2024. Архивировано 22 июня 2025 года.
  3. CFEngine Team & Community. CFEngine 3.21.7 released (англ.). Northern.tech AS.. Дата обращения: 28 июля 2024. Архивировано 22 июня 2025 года.
  4. (not translated to en) CFEngine’s Star Trek and AI origins (англ.) — 2023.
  5. Burgess, Mark University of Oslo : Cfengine V2.0 : A network configuration tool (англ.). Iu.hio.no. Дата обращения: 8 сентября 2013. Архивировано 23 июля 2013 года.
  6. Burgess, Mark Computer Immunology (англ.). Usenix.org (декабрь 1998). Дата обращения: 8 сентября 2013. Архивировано 27 сентября 2024 года.
  7. Burgess, Mark; Couch, Alva Autonomic Computing Approximated by Fixed-Point Promises, Proceedings of First IEEE International Workshop on Modelling Autonomic Communication Environments (MACE2006) (англ.) 197–222 (28 ноября 2006). Архивировано 25 апреля 2012 года.
  8. Hogg, Scott Promise Theory (англ.). Network World (1 июля 2014). Дата обращения: 1 сентября 2023. Архивировано 25 января 2021 года.
  9. Cfengine Completes Series A Investment (англ.), Осло, Норвегия: PRNewswire (4 April 2011). Архивировано 24 января 2025 года. Дата обращения: 22 августа 2014.
  10. Ryd, Thomas Welcome to Northern.tech (англ.). Northern.tech (1 июля 2017). Дата обращения: 28 июля 2024. Архивировано 24 января 2025 года.
  11. Burgess, Mark (1995). “Cfengine: a site configuration engine” (PDF). USENIX Computing Systems [англ.]. Berkeley, CA, USA: USENIX. 8 (3). Дата обращения 2014-08-22.
  12. Burgess, Mark (2003-11-29). “Configurable immunity for evolving human-computer systems”. Science of Computer Programming. 51 (3): 197—213. DOI:10.1016/j.scico.2003.12.004.
  13. Burgess, Mark (2003). “On the theory of system administration”. Science of Computer Programming. 49 (1—3): 1—46. DOI:10.1016/j.scico.2003.08.001.
  14. CFEngine Case Study - LinkedIn Infrastructure and Operations Automation at WebScale (англ.). CFEngine AS (ноябрь 2014). Архивировано 22 декабря 2014 года.

Ссылки