In the lab
Because CFEngine requires little in the way of dependencies, our lab environments are able to show how CFEngine can be installed directly on systems to configure them as fully fledged autonomous agents.
Device configuration is usually a simpler problem than custom host configuration, because dedicated devices are already limited to a well defined purpose, so there are no great challenges from on the modelling side. Configuration settings can usually be set like simple key-value pair substitution. In a CFEngine configuration this makes for a very simple documentation of desired state.
This is how we see the future of device management.
Workarounds in the field
Even though vendors currently prohibit the installation of cf-agent on their devices, CFEngine is flexible enough to work around this limitation: it is also possible to assign an ordinary networked host as a "minder" for a device -- and treat it as guest environment. This mimics the old agentless technologies like SNMP, etc.
We do this by communicating with the devices through a REST, remote XML or text interface. We use CFEngine's editing capabilities to ensure that configurations are maintained. This is a more fragile method of management, because it relies on external communication with the device.
Here are some examples
A Juniper router:
Before:

CFEngine configuration:

cf-agent runs:
![]()
After:

A NetApp "ontap" device:
Before:

CFEngine configuration:

cf-agent runs:

After:

Compliance:
![]()
Examples of devices
|
Switches/Routers
Load balancers
Proxies
|
WAN optimizers
Storage appliances
|
Future plans
In the future, we believe that all vendor devices will have to integrate into configuration frameworks if they are to survive in the marketplace. CFEngine is working with both customers and device suppliers to have our agent technology installed natively on these systems.
Do you want to support this effort? Contact us!