Solaris SMF
From radmind wiki
This page contains SMF related files for managing the radmind server on Solaris.
Contents |
[edit]
Installation
- Save the manifest file as radmind.xml
- Save the method file to /lib/svc/method/radmind
- Import the service manifest: svccfg import radmind.xml
- Configure the service properties (see below)
- Enable the service: svcadm enable network/radmind
[edit]
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
[edit]
Files
[edit]
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>
[edit]
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 $?
