In Cfengine 3, you say "bulk" to avoid multiple invocation.
On 09/17/2010 11:41 AM, Tim Cutts wrote: > > On 17 Sep 2010, at 10:27 am, Seva Gluschenko wrote: > >> While I disagree with Mark about usefulness of exit status (at least >> of exit status 0 in this case), in case of packages, it's pretty easy >> to check some vital file for existence as I stated already. I use such >> a method to detect availability of a package, and it never harmed me. >> Moreover, I use it like follows: >> >> classes: >> "ntpd_installed" expression => fileexists("/usr/sbin/ntpd"); >> >> packages >> !ntpd_installed:: >> "ntpd" >> package_method => yum, >> package_policy => "add"; >> >> This approach saves me from wasting CPU and time for unnecessary >> package manager invocation when a package is already installed. > > That's pretty unwieldy though, once the number of packages becomes large. > Personally I avoided this problem completely by very rarely using cfengine's > packages mechanism - I distribute files with cfengine containing lists of > desired package states, and my own script checks that those packages are > installed/removed as appropriate. It's not quite as flexible as cfengine's > method -- which I do still use occasionally when I need the extra stuff -- > but: > > a) It invokes the package manager far fewer times (only once per package > list file), and then only if the package list files or defined classes have > changed since the last time the script was run. > b) The resulting list file is much easier for my junior admins to make > changes to than editing full cfengine promise files. > > The downside is the script is Debian/Ubuntu specific, although it would be > pretty trivial to adapt it to cope with RPM-style distros as well/instead. > > Regards, > > Tim > _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine