The latest updates about everything CFEngine

Feature Friday #1: ifelse()

Looking for a way to concisely set a variable conditionally? Have you heard of ifelse()? In CFEngine, traditionally class expressions are used to constrain promises to different contexts. Setting a variable to different values based on context might look like this: /tmp/feature-friday-1.cf bundle agent __main__ { vars: "MyVariable" string => "My Default value"; redhat_8|centos_8|rocky_8:: "MyVariable" string => "My value for EL 8"; ubuntu_22:: "MyVariable" string => "My value for Ubuntu 22"; any:: "MyVariable" string => "My value on Friday", if => "Friday"; reports: "It's $(sys.

Posted by Nick Anderson
March 15, 2024

Feature Friday: A 42-part saga

Last year in commemoration of 30 years of CFEngine I received this lovely coin. I thought it would be fun to celebrate by writing 42 blog posts, each with some little tip about CFEngine. So, be sure to come check in on Friday for the first post in the Feature Friday series.

Posted by Nick Anderson
March 11, 2024

Show Notes: The Agent is In - Episode 34 - Host visibility with containerized CFEngine

Curious about getting visibility of a host where you can’t install CFEngine natively, but can run a container? Craig shows us how he’s getting inventory from his Torizon Verdin IMX8MP by deploying a container with a chroot containing volumes bind mounted from the host. A long post show discussion was had about CfgMgmtCamp as well as a long troubleshooting session dealing with a prickly package management situation. Video The video recording is available on YouTube:

Posted by Nick Anderson
February 29, 2024

Show Notes: The Agent is In - Episode 33 - Interview with Mark Burgess

The CFEngine team celebrates 30 years of CFEngine and has a chat with Mark Burgess, the original creator and author of CFEngine. Mark delves into the early chapters of his journey, tracing back the roots of his inspiration to science fiction sagas like Star Trek and Dr. Who, and the literary works of Isaac Asimov, Aurthur C. Clarke, and Paul Davies. Mark recalled his first computer, the fabulous, most programmable, decomposable, put back together-able, expandable thing, a BBC-b microcomputer.

Posted by Nick Anderson
January 25, 2024

Change in behavior: The arglist attribute now preserves spaces

When executing commands in a shell, the program and its arguments are typically separated by spaces. This command reads the content of two files and prints it out (concatenating it): command cat one.txt two.txt In the example above, cat is the command / program, while one.txt is the first argument, and two.txt is the second argument. This is great because it makes commands really easy to read and type, however there is one obvious drawback: When a space has a special meaning (separating arguments), what do you do when you actually need a space?

Posted by Lars Erik Wik
January 17, 2024

CFEngine 3.18.7 and 3.21.4 released

We are pleased to announce two new patch releases for CFEngine, version 3.18.7 and 3.21.4! These patch releases contain bug fixes and dependency updates. Changes We’d like to highlight one specific change in behavior, which some users will want to adjust to; Change in behavior - New location for ignore_interfaces.rx Users who rely on the ignore_interfaces.rx file for ignoring certain network interfaces should be aware of its new preferred location. See the blog post on the topic for more details:

January 11, 2024

CFEngine 2023 retrospective

As we bid farewell to 2023, it’s once again time to reflect on the milestones and progress we’ve made throughout the year. This year is especially significant because it marks 30 years since CFEngine’s birth. From its humble beginnings at the University of Oslo to the thousands of implementations across the world and counting, CFEngine has not only weathered the twists and turns of life, but has thrived in an industry where many have come and gone.

Posted by Cody Valle
December 31, 2023

Show Notes: The Agent is In - Episode 32 - Fireside chat w/ Mike Weilgart

Curious about how users feel about using CFEngine? Cody and Nick are joined by Mike Weilgart, a long time CFEngine user about his history and how CFEngine compares to other tools he has been using recently. Video The video recording is available on YouTube: At the end of every webinar, we stop the recording for a nice and relaxed, off-the-record chat with attendees. Join the next webinar to not miss this discussion.

Posted by Nick Anderson
December 28, 2023

CFEngine 3.23 released - Anniversary

Today, we are pleased to announce the release of CFEngine 3.23.0! This is a non-LTS (non-supported) release, where we introduce new features for users to test and give feedback on, allowing us to polish before the next LTS. (CFEngine 3.24 LTS is scheduled to release summer 2024). The codename for this release is anniversary, as this year is CFEngine’s 30th anniversary. CFEngine was initially released in 1993, and to mark this special occasion we’ve created a limited edition anniversary coin:

December 6, 2023

Show Notes: The Agent is In - Episode 31 - Sneak Peek of 3.23.0

Join the team for a sneak peek of what’s coming in 3.23.0. Herman joins Cody, Craig and Nick to discuss what’s new in the upcoming release of CFEngine 3.23.0. We look at improvements to Groups in Mission Portal with easier ways to specify specific hosts that should or should not be part of the group based on reported attributes. This new functionality makes it much easier to affect change across a set of hosts without touching policy.

Posted by Nick Anderson
November 30, 2023
Get in touch with us
to discuss how we can help!
Contact us
Sign up for
our newsletter
By signing up, you agree to your email address being stored and used to receive newsletters about CFEngine. We use tracking in our newsletter emails to improve our marketing content.