Переглянути джерело

Solaris SMF Service

Signed-off-by: Georg <georg@lysergic.dev>
tags/v2.9.0-rc1
Georg 2 роки тому
джерело
коміт
b106c01303
Аккаунт користувача з таким Email не знайдено
3 змінених файлів з 100 додано та 0 видалено
  1. 26
    0
      distrib/SMF/README
  2. 26
    0
      distrib/SMF/ergo
  3. 48
    0
      distrib/SMF/ergo.xml

+ 26
- 0
distrib/SMF/README Переглянути файл

@@ -0,0 +1,26 @@
1
+Created 22/11/2021 by georg@lysergic.dev.
2
+
3
+This directory contains Service Management Facility service files for ergo.
4
+These files should be compatible with current OpenSolaris / Illumos based operating systems. Tested on OpenIndiana.
5
+
6
+Prerequesites:
7
+	- ergo binary located at /opt/ergo/ergo
8
+	- ergo configuration located at /opt/ergo/ircd.yaml (hardcoded)
9
+	- ergo languages located at /opt/ergo/languages (to be compatible with default.yaml - you may adjust this path or disable languages in your custom ircd.yaml)
10
+	- ergo certificate and key located at /opt/ergo/fullchain.pem /opt/ergo/privkey.pem (to be compatible with default.yaml - you may adjust these paths in your custom ircd.yaml)
11
+	- `ergo` role user and `ergo` role group owning all of the above
12
+
13
+Installation:
14
+	- cp ergo.xml /lib/svc/manifest/network/
15
+	- cp ergo /lib/svc/method/
16
+	- svcadm restart manifest-import
17
+
18
+Usage:
19
+	- svcadm enable ergo (Start)
20
+	- tail /var/svc/log/network-ergo:default.log (Check ergo log and SMF output)
21
+	- svcs ergo (Check status)
22
+	- svcadm refresh ergo (Reload manifest and ergo configuration)
23
+	- svcadm disable ergo (Stop)
24
+
25
+Notes:
26
+	- Does not support multiple instances - spawns instance :default

+ 26
- 0
distrib/SMF/ergo Переглянути файл

@@ -0,0 +1,26 @@
1
+#!/sbin/sh
2
+#
3
+# SMF method script for ergo - used by manifest file ergo.xml
4
+# Created 22/11/2021 by georg@lysergic.dev
5
+
6
+. /lib/svc/share/smf_include.sh
7
+
8
+case $1 in
9
+'start')
10
+        exec /opt/ergo/ergo run --conf /opt/ergo/ircd.yaml
11
+        ;;
12
+
13
+'refresh' )
14
+        exec pkill -1 -U ergo -x ergo
15
+        ;;
16
+'stop' )
17
+        exec pkill -U ergo -x ergo
18
+        ;;
19
+
20
+*)
21
+        echo "Usage: $0 { start | refresh | stop }"
22
+        exit 1
23
+        ;;
24
+esac
25
+
26
+exit $?

+ 48
- 0
distrib/SMF/ergo.xml Переглянути файл

@@ -0,0 +1,48 @@
1
+<?xml version='1.0'?>
2
+<!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
3
+<service_bundle type='manifest' name='ergo'>
4
+  <service name='network/ergo' type='service' version='0'>
5
+    <create_default_instance enabled="true"/>
6
+    <single_instance/>
7
+    <dependency name='fs-local' grouping='require_all' restart_on='none' type='service'>
8
+      <service_fmri value='svc:/system/filesystem/local'/>
9
+    </dependency>
10
+    <dependency name='fs-autofs' grouping='optional_all' restart_on='none' type='service'>
11
+      <service_fmri value='svc:/system/filesystem/autofs'/>
12
+    </dependency>
13
+    <dependency name='net-loopback' grouping='require_all' restart_on='none' type='service'>
14
+      <service_fmri value='svc:/network/loopback'/>
15
+    </dependency>
16
+    <dependency name='net-physical' grouping='require_all' restart_on='none' type='service'>
17
+      <service_fmri value='svc:/network/physical'/>
18
+    </dependency>
19
+    <dependency name='config_data' grouping='require_all' restart_on='restart' type='path'>
20
+      <service_fmri value='file://localhost/opt/ergo/ircd.yaml'/>
21
+    </dependency>
22
+    <method_context working_directory="/opt/ergo">
23
+      <method_credential user='ergo' group='ergo' />
24
+    </method_context>
25
+    <exec_method name='start' type='method' exec='/lib/svc/method/ergo start' timeout_seconds='20'>
26
+      <method_context security_flags='aslr'/>
27
+    </exec_method>
28
+    <exec_method name='stop' type='method' exec='/lib/svc/method/ergo stop' timeout_seconds='20'/>
29
+    <exec_method name='refresh' type='method' exec='/lib/svc/method/ergo refresh' timeout_seconds='20'/>
30
+    <property_group name='general' type='framework'>
31
+      <propval name='action_authorization' type='astring' value='solaris.smf.manage.ergo'/>
32
+    </property_group>
33
+    <property_group name='startd' type='framework'>
34
+    <propval name='ignore_error' type='astring' value='core,signal'/>
35
+    <propval name='duration' type='astring' value='child'/>
36
+    </property_group>
37
+    <stability value='Unstable'/>
38
+    <template>
39
+      <common_name>
40
+        <loctext xml:lang='C'>IRC server</loctext>
41
+      </common_name>
42
+      <documentation>
43
+        <doc_link name='ergo-manual' uri='https://github.com/ergochat/ergo/blob/master/docs/MANUAL.md'/>
44
+        <doc_link name='ergo-userguide' uri='https://github.com/ergochat/ergo/blob/master/docs/USERGUIDE.md'/>
45
+      </documentation>
46
+    </template>
47
+  </service>
48
+</service_bundle>

Завантаження…
Відмінити
Зберегти