CFEngine in mixed Solaris, Linux, environments

If you’ve ever tried to use CFEngine for package management, you know that it is basically useless.

  1. CFEngine only supports installing packages and not removing them (yet).
  2. It has some crazy limit defined at compilation time which limits the number of packages you can install. (see Google://cfengine “Too many arguments in embedded script”)
  3. It merges all your package work into one logical section even if you logically split up the sections and had them in a certain order etc.
  4. etc.

What comes out of all this is that you are better off using repository aware package management tools via the shellcommands actions (IMHO).

In the case of Solaris, the choice of champions seems to be pkg-get ala bolthole and blastwave.
In the case of Debian/Ubuntu, use apt-get.
This also means you no longer need to copy your package files using the cfengine copy actions since these tools will automatically retrieve them from your custom repository.

For those wanting to set up a pkg-get repository, the makecontents script should help you on your way.

Be Sociable, Share!
  • Twitter
  • Facebook
  • email
  • LinkedIn
  • HackerNews
  • Reddit

2 comments for “CFEngine in mixed Solaris, Linux, environments

  1. lak
    March 13, 2007 at 2:32 pm

    You might want to check out Puppet, which I wrote after using and consulting on cfengine for a few years. It's got great package support, with providers for 18 different package types already, and it's good at handling annoying things like the same package having different names on different platforms.

    It goes a bit better, though, because you can create host entries, manage services, create cron jobs, and much more.

  2. me
    March 16, 2007 at 12:13 am

    I considered Puppet before deciding on CFEngine but with the stable version at 0.22 and the lack of wider spread adoption, I decided not to take a chance.

    When the project is more mature, I'm sure it will take off.

Leave a Reply

Your email address will not be published.