Skip to content

AsherBond/core

This branch is up to date with cfengine/core:master.

Folders and files

NameName
Last commit message
Last commit date
Dec 13, 2024
Aug 2, 2019
Dec 11, 2024
Oct 25, 2024
May 7, 2024
Jan 16, 2024
Jan 16, 2024
Jan 23, 2025
Jan 16, 2024
Aug 1, 2024
Jan 28, 2025
Dec 13, 2024
Jan 16, 2024
Jan 16, 2024
Feb 6, 2025
Jun 20, 2024
Feb 19, 2025
Jan 4, 2021
Jan 16, 2024
Jan 23, 2025
Oct 9, 2024
Feb 11, 2025
Feb 21, 2025
Jul 21, 2023
Feb 21, 2025
Jan 30, 2024
Feb 19, 2025
Jan 7, 2025
Sep 11, 2020
Feb 13, 2024
Oct 6, 2023
Dec 3, 2019
Apr 15, 2019
Oct 12, 2023
Jan 4, 2021
Apr 6, 2020
Jan 29, 2024
Dec 20, 2024
Jul 25, 2014
Jan 23, 2025
Dec 7, 2023
Feb 13, 2024
Feb 18, 2025
Oct 3, 2023
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021
Feb 18, 2025
Mar 17, 2015
Jan 4, 2021
Jun 17, 2020
Jun 2, 2017

Repository files navigation

Gitter chat

CFEngine 3

CFEngine 3 is a popular open source configuration management system. Its primary function is to provide automated configuration and maintenance of large-scale computer systems.

Source code repositories

CFEngine is comprised of several source code repositories. As you might be looking for another part of the open source code base, here is a list to ease navigation:

  • core (This repo) - The C source code for core components, like cf-agent and cf-serverd.
    • libntech (submodule in core) - Library of reusable C code, such as data structures, string manipulation, JSON parsing, file handling, etc.
    • core/contrib (subdirectory in core) - User-contributed tools and scripts
  • masterfiles - The Masterfiles Policy Framework (MPF) contains the default policy (.cf) files
  • documentation - Documentation on how CFEngine components work, the policy language, the enterprise features, etc.
  • cf-remote - Tooling to make deploying / testing CFEngine across many remote instances easy
  • buildscripts - Scripts and files needed to build installer packages across a wide variety of supported platforms

(Each repo also contains some supporting code/files, such as tests, scripts, documentation, etc.).

Installation

Pre-built installers are available from our website:

To install from source please see the INSTALL file for prerequisites and build instructions.

License

As per the LICENSE file, CFEngine Community is licensed under the GNU General Public License, version 3.

All the files in this repository are licensed under GNU GPL version 3, unless stated otherwise in the copyright notice inside the particular file.

Example Usage

In order to use the built cf-agent in the source tree you must add a $HOME/.cfagent/bin/cf-promises file:

$ pwd
<something>/core
$ echo "cd $(pwd); cf-promises/cf-promises \"\$@\"" > ~/.cfagent/bin/cf-promises

Hello World

The following code demonstrates simple CFEngine output through a reports promise.

bundle agent main
{
  reports:
    "Hello, world";
}

The following policy code may be executed with cf-agent (the main CFEngine binary) as follows.

$ cf-agent/cf-agent ./hello.cf
R: Hello, world

Debugging

As this project uses autotools you must use libtool to run gdb/lldb/debuggers:

./libtool --mode=execute <gdb|lldb|yourdebugger> ./cf-agent/cf-agent

Contributing

Please see the CONTRIBUTING.md file.

Relationship to CFEngine 2

CFEngine 3 is not a drop-in upgrade for CFEngine 2 installations. It is a significantly more powerful version, but it is incompatible with the CFEngine 2 policy language.

The server part of CFEngine 3 supports the network protocol of CFEngine 2, so you may upgrade your installation gradually.

Authors

CFEngine was originally created by Mark Burgess with many contributions from around the world. Thanks everyone!

CFEngine is sponsored by Northern.tech AS

About

CFEngine Community

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 88.8%
  • Shell 5.0%
  • M4 1.7%
  • Makefile 1.2%
  • Emacs Lisp 1.1%
  • Yacc 0.6%
  • Other 1.6%