Don't try to call shell commands, use the exit status of a "packages"
promise otherwise you are just writing a shell script and you lose all the
optimizations.
I don't have time to come up with an example right now, but perhaps this will
push you in
the right direction.
Andrew J. Millar wrote:
> Greetings all
>
> I'm struggling with a cfengine recipe - my goal is to check an slist of RPMs
> to
> see if they are installed, and install any missings ones. Alas, if at least
> one
> of the RPMs is installed, the class check fails, and the missings RPMS are not
> installed. If all of the RPMS are missing, then the class check passes and the
> RPMS are installed.
>
> In this example, I'm checking for the presence of rpm-build and createrepo
>
> Here is my setup:
> cf-agent --version
> This comprises cf-agent core community version 3.0.3 - (C) Cfengine AS 2008-
> (svn build)
>
> body common control
>
> {
> bundlesequence => { "checkrpms" };
> }
>
>
> bundle agent checkrpms
> {
> vars:
> "rpms_needed" slist => { "rpm-build", "createrepo" },
> comment => "List of required RPMs";
>
> classes:
> "rpms_installed" expression => returnszero("/bin/rpm -q
> $(rpms_needed)","noshell"),
> comment => "Check if required rpms are installed";
>
> commands:
> !rpms_installed::
> "/usr/bin/yum -q -y install $(rpms_needed)",
> comment => "Installing $(rpms_needed)";
> }
>
> If I uninstall createrepo and run the recipe, this is the output:
> # cf-agent -I -f ./check_rpms.cf
> rpm-build-4.4.2.3-18.el5
> package createrepo is not installed
> rpm-build-4.4.2.3-18.el5
> package createrepo is not installed
> rpm-build-4.4.2.3-18.el5
> package createrepo is not installed
> #
>
> If I uninstall both createrepo and rpm-build, the output is:
> # cf-agent -I -f ./check_rpms.cf
> package rpm-build is not installed
> package createrepo is not installed
> -> Executing '/usr/bin/yum -q -y install rpm-build'
> ...(timeout=-678,owner=-1,group=-1)
> -> Completed execution of /usr/bin/yum -q -y install rpm-build
> -> Executing '/usr/bin/yum -q -y install createrepo'
> ...(timeout=-678,owner=-1,group=-1)
> -> Completed execution of /usr/bin/yum -q -y install createrepo
> rpm-build-4.4.2.3-18.el5
> createrepo-0.4.11-3.el5
> rpm-build-4.4.2.3-18.el5
> createrepo-0.4.11-3.el5
> #
>
> Can anyone help me tweak the recipe to install the missing RPM if either are
> not installed?
>
> Many thanks
>
> Kind regards
> Andrew
>
>
>
> Shop spring’s building blocks at NET-A-PORTER.COM
> ______________________________________________________________________
>
> CONFIDENTIALITY NOTICE
> The information in this email is confidential and is intended solely for the
> addressee. Access to this email by anyone else is unauthorised. If you are
> not the intended recipient, you must not read, use or disseminate the
> information. Any views expressed in this message are those of the individual
> sender, except where the sender specifically states them to be the views of
> Net a Porter Ltd.
>
> Net A Porter Ltd is a company registered in England & Wales Number: 3820604
> Registered Office: The Dome, Whiteleys Centre, 151 Queensway, London, W2 4YN.
> _____________________________________________________________________
> _______________________________________________
> Help-cfengine mailing list
> [email protected]
> https://cfengine.org/mailman/listinfo/help-cfengine
--
Mark Burgess
-------------------------------------------------
Professor of Network and System Administration
Oslo University College, Norway
Personal Web: http://www.iu.hio.no/~mark
Office Telf : +47 22453272
-------------------------------------------------
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine