Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
CFEngine
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{short description|Configuration management software}} {{one source|date=August 2014}} {{ infobox software | logo = CFEngine_banner_logo_with_agent_and_text_2021.png | screenshot = | caption = | latest_release_version = 3.25.0,<ref name="CFEngine 3.25.0 release">{{cite web | url=https://cfengine.com/blog/2025/cfengine-3-25-released-auditability/|title=CFEngine 3.25.0 released|author=CFEngine Team & Community | publisher=Northern.tech AS.}}</ref> 3.24.2,<ref name="CFEngine 3.24.2 release">{{cite web |url=https://cfengine.com/blog/2025/cfengine-3-21-7-and-3-24-2-released/|title=CFEngine 3.24.2 released |author=CFEngine Team & Community |publisher=Northern.tech AS.}}</ref> 3.21.7<ref name="CFEngine 3.21.7 release">{{cite web |url=https://cfengine.com/blog/2025/cfengine-3-21-7-and-3-24-2-released/ |title=CFEngine 3.21.7 released |author=CFEngine Team & Community |publisher=Northern.tech AS.}}</ref> | latest_release_date = May 13th, 2025 | released = 1993 | programming language = [[C (programming language)|C]] | operating_system = [[Cross-platform]] | platform = [[Unix-like]], [[Microsoft Windows|Windows]] | genre = [[Configuration management]] [[System administration]] [[Network management]] | license = [[GNU General Public License#Version 3|GNU General Public License version 3]] | website = {{URL|https://cfengine.com/}} }} '''CFEngine''' is a [[configuration management]] system, written by [[Mark Burgess (computer scientist)|Mark Burgess]]. Its primary function is to provide automated configuration and maintenance of large-scale computer systems, including the unified management of [[Server (computing)|servers]], [[Desktop computer|desktops]], consumer and industrial devices, embedded network devices, mobile [[smartphone]]s, and [[tablet computer]]s. Released under the terms of the [[GNU General Public License]], CFEngine is [[free software]]. == History == The CFEngine project began in 1993 as a way for author Mark Burgess (then a post-doctoral fellow of the Royal Society at [[University of Oslo|Oslo University]], [[Norway]]) to get his work done by automating the management of a small group of workstations in the Department of Theoretical Physics. Burgess managed Unix workstations, scripting and fixing problems for users manually. Scripting took too much time, the flavours of Unix were significantly different, and scripts had to be maintained for multiple platforms, drowning in exception logic. After discussing the problems with a colleague, Burgess wrote the first version of CFEngine (''the configuration engine'') which was published as an internal report<ref name="CFEngine History">{{cite web |url=http://www.iu.hio.no/~mark/papers/cfengine_history.pdf |title=University of Oslo : Cfengine V2.0 : A network configuration tool |first=Mark |last=Burgess |authorlink=Mark Burgess (computer scientist) |publisher=Iu.hio.no |accessdate=2013-09-08 |archive-url=https://web.archive.org/web/20130723160143/http://www.iu.hio.no/~mark/papers/cfengine_history.pdf |archive-date=2013-07-23 |url-status=dead }}</ref> and presented at the CERN computing conference. It gained significant attention from a wider community because it hid platform differences using a domain-specific language. A year later, Burgess finished his post-doc but decided to stay in Oslo and took a job lecturing at [[Oslo University College]]. Here he realized that there was little or no research being done into [[configuration management]], and he set about applying the principles of scientific modelling to understanding computer systems. He developed the notion of [[#Convergence|convergent operators]], which remains a core of CFEngine. In 1998 Burgess wrote "Computer Immunology", a paper at the USENIX/LISA98 conference.<ref name="LISA98">{{cite web|url=http://www.usenix.org/legacy/publications/library/proceedings/lisa98/full_papers/burgess/burgess.pdf |title=Computer Immunology|publisher=Usenix.org|accessdate=2013-09-08|date=December 1998|first=Mark |last=Burgess |authorlink=Mark Burgess (computer scientist) }}</ref> It laid out a manifesto for creating self-healing systems, reiterated a few years later by IBM in their form of [[Autonomic Computing]]. This started a research effort which led to a major re-write, ''CFEngine 2'', which added features for machine learning, anomaly detection and secure communications. Between 1998 and 2004, CFEngine grew in adoption along with the popularity of [[Linux]] as a computing platform. During this time, Mark Burgess developed [[promise theory]], a model of distributed cooperation for self-healing automation.<ref name="MACE2006">{{cite web|first1=Mark |last1=Burgess |authorlink=Mark Burgess (computer scientist) |first2=Alva |last2=Couch |title=Autonomic Computing Approximated by Fixed-Point Promises, Proceedings of First IEEE International Workshop on Modelling Autonomic Communication Environments (MACE2006) |date=2006-11-28 |pages=197–222 |url=http://research.iu.hio.no/papers/MACE-v2.pdf |url-status= |archiveurl=https://web.archive.org/web/20120425125919/http://research.iu.hio.no/papers/MACE-v2.pdf |archivedate=2012-04-25}}</ref><ref>{{Cite web |last=Hogg |first=Scott |date=July 1, 2014 |title=Promise Theory |url=https://www.networkworld.com/article/2449562/promise-theory-mark-burgess-cfengine-sdn-cisco-aci-apic-opflex.html |access-date=September 1, 2023 |website=Network World}}</ref> In 2008, after more than five years of research, ''CFEngine 3'' was introduced, which incorporated promise theory as "a way to make CFEngine both simpler and more powerful at the same time", according to Burgess. The most significant re-write of the project to date, CFEngine 3 also integrated knowledge management and discovery mechanisms—allowing configuration management to scale to automate enterprise-class infrastructure. In June 2008 the company CFEngine AS was formed as a collaboration between author Mark Burgess, Oslo University College and the Oslo Innovation Centre in order to support users of CFEngine. In April 2009, the company launched the first commercial version of CFEngine - CFEngine Enterprise. The Enterprise version can be downloaded for free for up to 25 agents (clients). February 2011, the company received its first round of funding, from FERD Capital.<ref name="PRNewsire">{{cite press release |date=2011-04-04 |title=Cfengine Completes Series A Investment |url=http://www.prnewswire.com/news-releases/cfengine-completes-series-a-investment-119167974.html |type=Press release |location=Oslo, Norway |publisher=[[PRNewswire]] |accessdate=2014-08-22}}</ref> The company has offices in Oslo, Norway and Mountain View, California, USA. In 2017, the company changed its name to [https://www.northern.tech/ Northern.tech], to reflect that it is working on multiple software products, not only CFEngine.<ref>{{cite web |last=Ryd |first=Thomas |date=2017-07-01 |df=mdy |url=https://northern.tech/careers/blog/welcome-to-northern-tech |title=Welcome to Northern.tech |department=Blog |website=Northern.tech |language=en |access-date=2024-07-28}}</ref> == Design == One of the main ideas in CFEngine is that changes in computer configuration should be carried out in a ''convergent'' manner.<ref name="a site configuration engine">{{cite journal |first=Mark |last=Burgess |authorlink=Mark Burgess (computer scientist) |title=Cfengine: a site configuration engine |journal=USENIX Computing Systems |location=Berkeley, CA, USA |publisher=[[USENIX]] |volume= 8 |issue=3 |date=Summer 1995 |url=https://www.usenix.org/legacy/publications/compsystems/1995/sum_burgess.pdf |accessdate=2014-08-22}}</ref><ref name="Configurable immunity">{{cite journal|first=Mark |last=Burgess |authorlink=Mark Burgess (computer scientist) |title=Configurable immunity for evolving human-computer systems |journal=Science of Computer Programming |volume=51 |issue=3 |date=2003-11-29 |pages=197–213 |doi=10.1016/j.scico.2003.12.004 |doi-access=free }}</ref> This means that each change operation made by the agent should have the character of a [[fixed point (mathematics)|fixed point]]. Rather than describing the steps needed to make a change, CFEngine language describes the final state in which one wants to end up. The agent then ensures that the necessary steps are taken to end up in this "policy compliant state". Thus, CFEngine can be run again and again, whatever the initial state of a system, and it will end up with a predictable result. CFEngine supports the item of statistical compliance with policy, meaning that a system can never guarantee to be exactly in an ideal or desired state, rather one approaches (converges) towards the desired state by best-effort, at a rate that is determined by the ratio of the frequency of environmental change to the rate of CFEngine execution.<ref name="On the theory of system administration">{{Cite journal |first=Mark |last=Burgess |authorlink=Mark Burgess (computer scientist) |title=On the theory of system administration |journal=Science of Computer Programming |volume=49 |year=2003 |issue=1–3 |pages=1–46 |doi=10.1016/j.scico.2003.08.001 |doi-access=free }}</ref> CFEngine provides an operating system-independent interface to [[Unix-like]] host configuration. It requires some expert knowledge to deal with peculiarities of different operating systems, but has the power to perform maintenance actions across multiple hosts. CFEngine can be used on Windows hosts as well, and is widely used for managing large numbers of Unix hosts that run heterogeneous [[operating systems]], e.g. [[Solaris (operating system)|Solaris]], [[Linux]], [[AIX operating system|AIX]], [[Tru64 UNIX|Tru64]] and [[HP-UX]].{{cn|date=April 2023}} == Users == CFEngine is used in both large and small companies, as well as in many universities and governmental institutions.{{Citation needed|date=May 2012}} The largest reported datacenter under management of CFEngine is above a million servers, while sites as large as 40,000 machines are publicly reported ([[LinkedIn]]<ref>{{cite web | url = https://cfengine.com/wp-content/uploads/2014/11/LinkedIn_CFEngine_Case_Study.pdf | title = CFEngine Case Study - LinkedIn Infrastructure and Operations Automation at WebScale | date = November 2014 | publisher = CFEngine AS}}</ref>), while sites of several thousand hosts running under CFEngine are common.{{Citation needed|date=May 2012}} According to statistics from CFEngine AS, probably several million computers run CFEngine around the world, and users from more than 100 countries have been registered. == Research == Shortly after its inception, CFEngine inspired a field of research into automated configuration management. The CFEngine project claims to attempt to place the problem of configuration management in a scientific framework. Its author Mark Burgess has developed a range of theoretical tools and results to talk about the problem, and has written several text books and [[monograph]]s explaining them.{{cn|date=April 2023}} == See also == {{Portal|Free and open-source software}} * [[Comparison of open-source configuration management software]] * [[Anomaly-based intrusion detection system]] * [[Host-based intrusion detection system]] * [[Rudder (software)]] == References == {{refs}} == External links == * {{Official website|https://cfengine.com}} * {{GitHub|cfengine/core}} [[Category:Configuration management]] [[Category:Orchestration software]] [[Category:Free network management software]] [[Category:Free software programmed in C]] [[Category:Multi-agent network management software]] [[Category:Software using the GNU General Public License]] [[Category:System administration]] [[Category:Unix package management-related software]] [[Category:GNU Project software|Cfengine]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite press release
(
edit
)
Template:Cite web
(
edit
)
Template:Cn
(
edit
)
Template:GitHub
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:One source
(
edit
)
Template:Portal
(
edit
)
Template:Refs
(
edit
)
Template:Short description
(
edit
)
Template:Template other
(
edit
)