Creating a service manifest for BigBrother under Solaris

BigBrother (www.bb4.org/features.html) is designed to let anyone see how their network is doing in near real-time, from any web browser, anywhere. It's been around a long time {I first came across it whilst working at ESOC/ESA in Germany back in 1994 and we found it useful then}

The only shortfall has been that the method to start/stop BigBrother has never changed, not ever under Solaris 10. Therefore, I've created this simple manifest in order to bring the start/shutdown of BigBrother into the 21st century :-)

How to configure BigBrother service manifest under Solaris 10?

Create a service directory for the monitoring application

# mkdir /var/svc/manifest/application/monitoring
# cd /var/svc/manifest/application/monitoring

Create the contents of the bigbrother manifest (bigbrother.xml)

<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<!-- bigbrother.xml : BigBrother manifest, Martin Churchill 2006-06-01 -->
<service_bundle type='manifest' name='bigbrother'>
   <service name='application/monitoring/bigbrother' type='service' version='1'>
      <single_instance />
         <dependency name='multi-user-server' grouping='require_any' restart_on='error' type='service'>
         <service_fmri value='svc:/milestone/multi-user-server:default' />
      </dependency>
      <exec_method type='method' name='start' exec='/export/home/bigbro/bbc/runbb.sh start' timeout_seconds='120' >
         <method_context>
            <method_credential user='bigbro' group='bigbro' />
         </method_context>
      </exec_method>
      <exec_method type='method' name='stop' exec='/export/home/bigbro/bbc/runbb.sh stop' timeout_seconds='120' >
         <method_context>
            <method_credential user='bigbro' group='bigbro' />
         </method_context>
      </exec_method>
      <instance name='default' enabled='false' />
      <stability value='Unstable' />
      <template>
         <common_name>
            <loctext xml:lang='C'>Big Brother</loctext>
         </common_name>
      </template>
   </service>
</service_bundle>

In the example above, the user and group for running BigBrother are bigbro/bigbro, and I have it installed under /export/home/bigbro/, so you may want to change the manifest file to suite your needs.

Next we need validate the manifest

# svccfg validate /var/svc/manifest/application/monitoring/bigbrother.xml

This validates the syntax of the xml file. If it returns the message:

svccfg: couldn't parse document
then try running the following xmllint for more detailed error messages::
# xmllint /var/svc/manifest/application/monitoring/bigbrother.xml

Then finally, all we need to do is import and enable the service

# svccfg import /var/svc/manifest/application/monitoring/bigbrother.xml
# svcadm enable svc:/application/monitoring/bigbrother:default