On Friday 17 Sep 2010 10:27:06 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.

I'm already doing that to determine if the package needs to be installed and 
the package manager invoked. 

But I also have other things that depend upon the successful installation 
(copying a custom config file, basically). Currently, the config file is 
copied even if the package installation was unsuccessful, because it relies on 
a class being set only if the package manager was successful, but instead it's 
always set.

I can however somewhat work around that using the same method:

classes:
      "ntpd_installed" expression => fileexists("/usr/sbin/ntpd");
 
packages:
    !ntpd_installed::
         "ntpd"
            package_method => yum,
            package_policy => "add";

files:
    ntpd_installed::
      "/etc/ntd.conf"
         # copy the custom config file


However my understanding is that this would require two agent invocations to 
get the intended configuration, the first would install the package, the 
second would copy the config file.

-- 
D.
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to