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.
Series Posts
- ifelse()
- $(with)
- execresult_as_data()
- cf-remote
- cfbs
- cf-promises
- depends_on
- –bundlesequence
- body file control - inputs
- cf-support
- namespaces
- special variables
- classesmatching()
- variablesmatching() & variablesmatching_as_data()
- bundlesmatching()
- host info report
- Tags for Inventory and Reporting
- Augments - def.json
- What variables and classes are defined?
- Macros
- Promisees or Stakeholdes
- Don’t fix, just warn
- Agent say!
- Augments - host_specific.json
- Unprivileged execution
- Groups custom promise type
- Multiple outcomes
- Restricting individual promises using if and unless
- Variable class expressions
- Agent svg
- Seeing a data structure with storejson()
- Doing math in policy with eval()
- Why associative arrays when data containers exist?
- Self organizing groups
- Groups in Mission Portal
- Formatting policy with cffmt
- Decisions based on arbitrary semantic versions
- Developing modules that take input
- The power of lists and implicit iteration
- What would CFEngine do?
- How can I quote thee, let me count the ways
- ob-cfengine3