#######################################################
#
# cf.update - for iu.hio.no
#
#######################################################

###
#
# BEGIN cf.update
#
###

#######################################################################
#
# This script distributes the configuration, a simple file so that,
# if there are syntax errors in the main config, we can still
# distribute a correct configuration to the machines afterwards, even
# though the main config won't parse. It is read and run just before the
# main configuration is parsed.
#
#######################################################################

control:

   actionsequence  = ( copy processes tidy )  # Keep this simple and constant

   domain          = ( iu.hio.no )  # Needed for remote copy

   #
   # Which host/dir is the master for configuration roll-outs?
   #

   policyhost      = ( nexus.iu.hio.no )
   master_cfinput  = ( /iu/nexus/local/iu/cfengine/inputs ) 

   AddInstallable = ( new_cfenvd new_cfservd )

   #
   # Some convenient variables
   #

   workdir         = ( /var/cfengine )

  solaris::

   cf_install_dir  = ( /iu/nexus/local/sbin )

  linux::

   cf_install_dir  = ( /iu/cube/local/sbin )

   ###################################################################
   #
   # Spread the load, make sure the servers get done first though
   #
   ###################################################################

  !AllBinaryServers::

     SplayTime = ( 1 )

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

 #
 # Make sure there is a local copy of the configuration and
 # the most important binaries in case we have no connectivity
 # e.g. for mobile stations or during DOS attacks
 #

copy:

     $(master_cfinput)            dest=$(workdir)/inputs
                                  r=inf
                                  mode=700
                                  type=binary
                                  exclude=*.lst
                                  exclude=*~
                                  exclude=#*
                                  server=$(policyhost)
                                  trustkey=true

 !quetzalcoatal::

     $(cf_install_dir)/cfagent    dest=$(workdir)/bin/cfagent 
                                  mode=755  
                                  backup=false
                                  type=checksum

     $(cf_install_dir)/cfservd    dest=$(workdir)/bin/cfservd
                                  mode=755
                                  backup=false
                                  type=checksum
                                  define=new_cfservd

     $(cf_install_dir)/cfexecd    dest=$(workdir)/bin/cfexecd
                                  mode=755  
                                  backup=false
                                  type=checksum

     $(cf_install_dir)/cfenvd     dest=$(workdir)/bin/cfenvd
                                  mode=755  
                                  backup=false
                                  type=checksum
                                  define=new_cfenvd

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

tidy:

     #
     # Cfexecd stores output in this directory.
     # Make sure we don't build up files and choke on our own words!
     #

     $(workdir)/outputs pattern=* age=7

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

processes:

  new_cfservd::

    "cfservd" signal=term restart /var/cfengine/bin/cfservd

  new_cfenvd::

    "cfenvd" signal=kill restart "/var/cfengine/bin/cfenvd -H"


###
#
# END cf.update
#
###
