Feature Friday: A 42-part saga

Posted by Nick Anderson
March 11, 2024

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

  1. ifelse()
  2. $(with)
  3. execresult_as_data()
  4. cf-remote
  5. cfbs
  6. cf-promises
  7. depends_on
  8. –bundlesequence
  9. body file control - inputs
  10. cf-support
  11. namespaces
  12. special variables
  13. classesmatching()
  14. variablesmatching() & variablesmatching_as_data()
  15. bundlesmatching()
  16. host info report
  17. Tags for Inventory and Reporting
  18. Augments - def.json
  19. What variables and classes are defined?
  20. Macros
  21. Promisees or Stakeholdes
  22. Don’t fix, just warn
  23. Agent say!
  24. Augments - host_specific.json
  25. Unprivileged execution
  26. Groups custom promise type
  27. Multiple outcomes
  28. Restricting individual promises using if and unless
  29. Variable class expressions
  30. Agent svg
  31. Seeing a data structure with storejson()
  32. Doing math in policy with eval()
  33. Why associative arrays when data containers exist?
  34. Self organizing groups
  35. Groups in Mission Portal
  36. Formatting policy with cffmt
  37. Decisions based on arbitrary semantic versions
  38. Developing modules that take input
  39. The power of lists and implicit iteration
  40. What would CFEngine do?
  41. How can I quote thee, let me count the ways
  42. ob-cfengine3