Thank you, Aleksey.  I will try this and provide an update.

The reason why I would like to create such a configuration change is so that I 
can make sure that servers that are not being monitored via SNMP are at least 
configured to be monitored so that the next SNMP discovery will pick up the 
servers that do not have its SNMP configured and started.  What I didn't 
include in my previous email is that I perform a copy of snmpd.conf into 
servers that may not have it.  This is the case for starting the process as 
well as making sure that it will start again when the server is rebooted.

In the case of the restart, I would like the process to restart when snmpd.conf 
changes.

jerome

-----Original Message-----
From: Aleksey Tsalolikhin [mailto:atsaloli.t...@gmail.com] 
Sent: Tuesday, September 20, 2011 11:08 PM
To: Jerome Yanga
Cc: help-cfengine@cfengine.org
Subject: Re: CFEngine Help: how to start a service and make sure it runs after 
a reboot

On Fri, Sep 16, 2011 at 4:44 PM, Jerome Yanga <jya...@esri.com> wrote:
> Hi!
>
> I am trying to replicate the following commands in a promise.  I have tried 
> the restart_class but I cannot seem to get it working the way I have 
> described below.
>
> service snmpd start/restart
> chkconfig snmpd on
>
> I want it to restart snmpd if it is already running and start it if it is 
> stopped.

Why, please?  (I want to understand the use case.)


Ok, so you want to:

Check if the process is running, and based on that set a class PROCESS_RUNNING

if PROCESS_RUNNING, then restart it

if not PROCESS_RUNNING, then start it

Right?

Try this on for size (tested with sendmail daemon, it does work):

bundle agent example

{
processes:

 ".*"

    process_count   => anyprocs,
    process_select  => proc_finder;


commands:

 process_running::

   "/bin/echo restart command";

 process_not_running::
   "/bin/echo start command";

}

########################################################

body process_select proc_finder

{

command => "sendmail: .*"; # (Anchored) regular expression matching
the command/cmd field of a process

process_result => "command";

}

########################################################

body process_count anyprocs

{
match_range => "0,0"; # Integer range for acceptable number of matches
for this process


out_of_range_define => { "process_running" }; # List of classes to
define if the matches are out of range

in_range_define => { "process_not_running" }; # List of classes to
define if the matches are in range.


}

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

Reply via email to