Solaris SMF

From radmind wiki

Jump to: navigation, search

This page contains SMF related files for managing the radmind server on Solaris.

Contents

Installation

  1. Save the manifest file as radmind.xml
  2. Save the method file to /lib/svc/method/radmind
  3. Import the service manifest: svccfg import radmind.xml
  4. Configure the service properties (see below)
  5. Enable the service: svcadm enable network/radmind

Configuration options

To set a property: svccfg -s network/radmind <property> = <type>: <value>

Be sure to set radmind/path_to_radmind or the startup method will assume it is installed to /opt/radmind/sbin/radmind.

Property Type CLI Option Example Value
radmind/path_to_radmind astring /opt/radmind/sbin/radmind
radmind/path astring -D /var/radmind
radmind/port astring -p 6222
radmind/max_compression count -Z 5
radmind/max_connections count -m 0
radmind/backlog boolean -b true
radmind/bind_address astring -a 192.168.0.1
radmind/register_bonjour boolean -B false
radmind/syslog_facility astring -F
radmind/syslog_level astring -L
radmind/ca_directory astring -P /var/radmind/cert
radmind/use_random_seed_file boolean -r false
radmind/umask astring -u 077
radmind/use_pam boolean -U false
radmind/auth_level count -w 2
radmind/ca_pem_file astring -x /var/radmind/cert/ca.pem
radmind/cert_pem_file astring -y /var/radmind/cert/cert.pem
radmind/private_key_file astring -z

Ex: To set the port: svccfg -s network/radmind radmind/port = astring: 6222

Once a property is set restart to apply the changes:

# svcadm restart network/radmind


Files

Manifest

<?xml version='1.0'?>
<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
<service_bundle type='manifest' name='export'>
  <service name='network/radmind' type='service' version='0'>
    <create_default_instance enabled='false'/>
    <single_instance/>
    <dependency name='network' grouping='require_all' restart_on='error' type='service'>
      <service_fmri value='svc:/milestone/network:default'/>
    </dependency>
    <dependency name='filesystem' grouping='require_all' restart_on='error' type='service'>
      <service_fmri value='svc:/system/filesystem/local'/>
    </dependency>
    <exec_method name='start' type='method' exec='/lib/svc/method/radmind start' timeout_seconds='60'>
      <method_context/>
    </exec_method>
    <exec_method name='stop' type='method' exec=':kill' timeout_seconds='60'>
      <method_context/>
    </exec_method>
    <property_group name='application' type='application'/>
    <property_group name='method_context' type='framework'>
      <propval name='project' type='astring' value=':default'/>
      <propval name='resource_pool' type='astring' value=':default'/>
      <propval name='working_directory' type='astring' value=':default'/>
    </property_group>
    <property_group name='startd' type='framework'>
      <propval name='duration' type='astring' value='contract'/>
      <propval name='ignore_error' type='astring' value='core,signal'/>
    </property_group>
    <property_group name='radmind' type='application'>
      <propval name='auth_level' type='count' value='2'/>
      <propval name='max_compression' type='count' value='9'/>
      <propval name='port' type='astring' value='6222'/>
      <propval name='umask' type='astring' value='077'/>
    </property_group>
    <stability value='Evolving'/>
    <template>
      <common_name>
        <loctext xml:lang='C'>Radmind Server</loctext>
      </common_name>
    </template>
  </service>
</service_bundle>

Method

Save as /lib/svc/method/radmind

#!/sbin/sh

. /lib/svc/share/ipf_include.sh

STARTUPPATH=`svcprop -p radmind/path_to_radmind network/radmind 2> /dev/null`
[ $? = 0 ] || STARTUPPATH="/opt/radmind/sbin/radmind"

DAEMONARGS=""

BACKLOG=`svcprop -p radmind/backlog network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$BACKLOG" != "x" ] && DAEMONARGS="$DAEMONARGS -b $BACKLOG"
BINDADDRESS=`svcprop -p radmind/bind_address network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$BINDADDRESS" != "x" ] && DAEMONARGS="$DAEMONARGS -a $BINDADDRESS"
BONJOUR=`svcprop -p radmind/register_bonjour network/radmind 2> /dev/null`
[ $? = 0 ] && [ $BONJOUR != "false" ] && DAEMONARGS="$DAEMONARGS -B"
COMPRESSION=`svcprop -p radmind/max_compression network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$COMPRESSION" != "x" ] && DAEMONARGS="$DAEMONARGS -Z $COMPRESSION"
SYSLOGFACILITY=`svcprop -p radmind/syslog_facility network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$SYSLOGFACILITY" != "x" ] && DAEMONARGS="$DAEMONARGS -F $SYSLOGFACILITY"
SYSLOGLEVEL=`svcprop -p radmind/syslog_level network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$SYSLOGLEVEL" != "x" ] && DAEMONARGS="$DAEMONARGS -L $SYSLOGLEVEL"
PORT=`svcprop -p radmind/port network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$PORT" != "x" ] && DAEMONARGS="$DAEMONARGS -p $PORT"
CADIRECTORY=`svcprop -p radmind/ca_directory network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$CADIRECTORY" != "x" ] && DAEMONARGS="$DAEMONARGS -P $CADIRECTORY"
RANDOMSEEDFILE=`svcprop -p radmind/use_random_seed_file network/radmind 2> /dev/null`
[ $? = 0 ] && [ "$RANDOMSEEDFILE" != "false" ] && DAEMONARGS="$DAEMONARGS -r"
UMASK=`svcprop -p radmind/umask network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$UMASK" != "x" ] && DAEMONARGS="$DAEMONARGS -u $UMASK"
USEPAM=`svcprop -p radmind/use_pam network/radmind 2> /dev/null`
[ $? = 0 ] && [ "$USEPAM" != "false" ] && DAEMONARGS="$DAEMONARGS -U"
AUTHLEVEL=`svcprop -p radmind/auth_level network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$AUTHLEVEL" != "x" ] && DAEMONARGS="$DAEMONARGS -w $AUTHLEVEL"
CAPEMFILE=`svcprop -p radmind/ca_pem_file network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$CAPEMFILE" != "x" ] && DAEMONARGS="$DAEMONARGS -x $CAPEMFILE"
CERTPEMFILE=`svcprop -p radmind/cert_pem_file network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$CERTPEMFILE" != "x" ] && DAEMONARGS="$DAEMONARGS -y $CERTPEMFILE"
PRIVATEKEYFILE=`svcprop -p radmind/private_key_file network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$PRIVATEKEYFILE" != "x" ] && DAEMONARGS="$DAEMONARGS -z $PRIVATEKEYFILE"
WRORKINGDIR=`svcprop -p radmind/path network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$WRORKINGDIR" != "x" ] && DAEMONARGS="$DAEMONARGS -D $WRORKINGDIR"
MAXCONNECTIONS=`svcprop -p radmind/max_connections network/radmind 2> /dev/null`
[ $? = 0 ] && [ "x$MAXCONNECTIONS" != "x" ] && DAEMONARGS="$DAEMONARGS -m $MAXCONNECTIONS"


case $1 in
'start')
        $STARTUPPATH $DAEMONARGS
        ;;

*)
        echo "Usage: $0 start "
        exit 1
        ;;
esac

exit $?
Personal tools