I create an SMF manifest last week for a new service, and needed two environment variables to be set prior to the services’ start method being invoked. After poking around the svccfg manual page, I came across the setenv subcommand, which can be used to set an environment variable:
svccfg -s tinydns setenv FOO bar
Since I was creating a manifest from scratch, I ran this against a temporary service and then used the svccfg “export” command to display the entry I needed to add to the manifest I was creating:
svccfg export tinydns
Here is the XML that was displayed for the environment variable addition:
<exec_method name='start' type='method' exec='/lib/svc/method/tinydns start' timeout_seconds='60'> <method_context> <method_environment> <envvar name='FOO' value='bar'/> </method_environment> </method_context> /exec_method>
I like SMF, but sometimes wonder if it is over-engineered for what it actually needs to do. If you have opinions on this, please let me know by submitting a comment.