We add templates for systemd service files and systemd targets under
doc/examples/systemd and flag them to be built. The generated files are
also added to .gitignore.

Signed-off-by: Apollon Oikonomopoulos <[email protected]>
---
 .gitignore                                     |  1 +
 Makefile.am                                    |  9 ++++++++-
 doc/examples/systemd/ganeti-common.service.in  |  6 ++++++
 doc/examples/systemd/ganeti-confd.service.in   | 17 +++++++++++++++++
 doc/examples/systemd/ganeti-luxid.service.in   | 18 ++++++++++++++++++
 doc/examples/systemd/ganeti-master.target      |  8 ++++++++
 doc/examples/systemd/ganeti-masterd.service.in | 18 ++++++++++++++++++
 doc/examples/systemd/ganeti-mond.service.in    | 14 ++++++++++++++
 doc/examples/systemd/ganeti-node.target        |  8 ++++++++
 doc/examples/systemd/ganeti-noded.service.in   | 17 +++++++++++++++++
 doc/examples/systemd/ganeti-rapi.service.in    | 19 +++++++++++++++++++
 doc/examples/systemd/ganeti.service            | 18 ++++++++++++++++++
 doc/examples/systemd/ganeti.target             |  8 ++++++++
 13 files changed, 160 insertions(+), 1 deletion(-)
 create mode 100644 doc/examples/systemd/ganeti-common.service.in
 create mode 100644 doc/examples/systemd/ganeti-confd.service.in
 create mode 100644 doc/examples/systemd/ganeti-luxid.service.in
 create mode 100644 doc/examples/systemd/ganeti-master.target
 create mode 100644 doc/examples/systemd/ganeti-masterd.service.in
 create mode 100644 doc/examples/systemd/ganeti-mond.service.in
 create mode 100644 doc/examples/systemd/ganeti-node.target
 create mode 100644 doc/examples/systemd/ganeti-noded.service.in
 create mode 100644 doc/examples/systemd/ganeti-rapi.service.in
 create mode 100644 doc/examples/systemd/ganeti.service
 create mode 100644 doc/examples/systemd/ganeti.target

diff --git a/.gitignore b/.gitignore
index 8a6d1ac..801316e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -83,6 +83,7 @@
 /doc/examples/ganeti-node-role.ocf
 /doc/examples/gnt-config-backup
 /doc/examples/hooks/ipsec
+/doc/examples/systemd/ganeti-*.service
 
 # lib
 /lib/_constants.py
diff --git a/Makefile.am b/Makefile.am
index eb39b74..0df7ea9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -337,7 +337,14 @@ BUILT_EXAMPLES = \
        doc/examples/ganeti-master-role.ocf \
        doc/examples/ganeti-node-role.ocf \
        doc/examples/gnt-config-backup \
-       doc/examples/hooks/ipsec
+       doc/examples/hooks/ipsec \
+       doc/examples/systemd/ganeti-common.service \
+       doc/examples/systemd/ganeti-confd.service \
+       doc/examples/systemd/ganeti-luxid.service \
+       doc/examples/systemd/ganeti-masterd.service \
+       doc/examples/systemd/ganeti-mond.service \
+       doc/examples/systemd/ganeti-noded.service \
+       doc/examples/systemd/ganeti-rapi.service
 
 dist_ifup_SCRIPTS = \
        tools/kvm-ifup-os
diff --git a/doc/examples/systemd/ganeti-common.service.in 
b/doc/examples/systemd/ganeti-common.service.in
new file mode 100644
index 0000000..e267323
--- /dev/null
+++ b/doc/examples/systemd/ganeti-common.service.in
@@ -0,0 +1,6 @@
+[Unit]
+Description = Ganeti one-off setup
+
+[Service]
+Type = oneshot
+ExecStart = @PKGLIBDIR@/ensure-dirs
diff --git a/doc/examples/systemd/ganeti-confd.service.in 
b/doc/examples/systemd/ganeti-confd.service.in
new file mode 100644
index 0000000..db3a913
--- /dev/null
+++ b/doc/examples/systemd/ganeti-confd.service.in
@@ -0,0 +1,17 @@
+[Unit]
+Description = Ganeti configuration daemon (confd)
+Documentation = man:ganeti-confd(8)
+Requires = ganeti-common.service
+After = ganeti-common.service
+PartOf = ganeti-node.target
+ConditionPathExists = @LOCALSTATEDIR@/lib/ganeti/config.data
+
+[Service]
+Type = simple
+User = @GNTCONFDUSER@
+Group = @GNTCONFDGROUP@
+ExecStart = @SBINDIR@/ganeti-confd -f
+Restart = on-failure
+
+[Install]
+WantedBy = ganeti-node.target ganeti.target
diff --git a/doc/examples/systemd/ganeti-luxid.service.in 
b/doc/examples/systemd/ganeti-luxid.service.in
new file mode 100644
index 0000000..2fbcb4a
--- /dev/null
+++ b/doc/examples/systemd/ganeti-luxid.service.in
@@ -0,0 +1,18 @@
+[Unit]
+Description = Ganeti query daemon (luxid)
+Documentation = man:ganeti-luxid(8)
+Requires = ganeti-common.service
+After = ganeti-common.service
+PartOf = ganeti-master.target
+ConditionPathExists = @LOCALSTATEDIR@/lib/ganeti/config.data
+
+[Service]
+Type = simple
+User = @GNTLUXIDUSER@
+Group = @GNTLUXIDGROUP@
+ExecStart = @SBINDIR@/ganeti-luxid -f
+Restart = on-failure
+SuccessExitStatus = 0 11
+
+[Install]
+WantedBy = ganeti-master.target ganeti.target
diff --git a/doc/examples/systemd/ganeti-master.target 
b/doc/examples/systemd/ganeti-master.target
new file mode 100644
index 0000000..ec1a980
--- /dev/null
+++ b/doc/examples/systemd/ganeti-master.target
@@ -0,0 +1,8 @@
+[Unit]
+Description = Ganeti master functionality
+Documentation = man:ganeti(7)
+After = syslog.target
+PartOf = ganeti.target
+
+[Install]
+WantedBy = ganeti.target
diff --git a/doc/examples/systemd/ganeti-masterd.service.in 
b/doc/examples/systemd/ganeti-masterd.service.in
new file mode 100644
index 0000000..2547dd3
--- /dev/null
+++ b/doc/examples/systemd/ganeti-masterd.service.in
@@ -0,0 +1,18 @@
+[Unit]
+Description = Ganeti master daemon (masterd)
+Documentation = man:ganeti-masterd(8)
+Requires = ganeti-common.service
+After = ganeti-common.service
+PartOf = ganeti-master.target
+ConditionPathExists = @LOCALSTATEDIR@/lib/ganeti/config.data
+
+[Service]
+Type = simple
+User = @GNTMASTERUSER@
+Group = @GNTMASTERDGROUP@
+ExecStart = @SBINDIR@/ganeti-masterd -f
+Restart = on-failure
+SuccessExitStatus = 0 11
+
+[Install]
+WantedBy = ganeti-master.target ganeti.target
diff --git a/doc/examples/systemd/ganeti-mond.service.in 
b/doc/examples/systemd/ganeti-mond.service.in
new file mode 100644
index 0000000..e526ae0
--- /dev/null
+++ b/doc/examples/systemd/ganeti-mond.service.in
@@ -0,0 +1,14 @@
+[Unit]
+Description = Ganeti monitoring daemon (mond)
+Documentation = man:ganeti-mond(8)
+Requires = ganeti-common.service
+After = ganeti-common.service
+PartOf = ganeti-node.target
+
+[Service]
+Type = simple
+ExecStart = @SBINDIR@/ganeti-mond -f
+Restart = on-failure
+
+[Install]
+WantedBy = ganeti-node.target ganeti.target
diff --git a/doc/examples/systemd/ganeti-node.target 
b/doc/examples/systemd/ganeti-node.target
new file mode 100644
index 0000000..d38ba28
--- /dev/null
+++ b/doc/examples/systemd/ganeti-node.target
@@ -0,0 +1,8 @@
+[Unit]
+Description = Ganeti node functionality
+Documentation = man:ganeti(7)
+After = syslog.service
+PartOf = ganeti.target
+
+[Install]
+WantedBy = ganeti.target
diff --git a/doc/examples/systemd/ganeti-noded.service.in 
b/doc/examples/systemd/ganeti-noded.service.in
new file mode 100644
index 0000000..64d1ed7
--- /dev/null
+++ b/doc/examples/systemd/ganeti-noded.service.in
@@ -0,0 +1,17 @@
+[Unit]
+Description = Ganeti node daemon (noded)
+Documentation = man:ganeti-noded(8)
+After = ganeti-common.service
+Requires = ganeti-common.service
+PartOf = ganeti-node.target
+ConditionPathExists = @LOCALSTATEDIR@/lib/ganeti/server.pem
+
+[Service]
+Type = simple
+ExecStart = @SBINDIR@/ganeti-noded -f
+Restart = on-failure
+# Important: do not kill any KVM processes
+KillMode = process
+
+[Install]
+WantedBy = ganeti-node.target ganeti.target
diff --git a/doc/examples/systemd/ganeti-rapi.service.in 
b/doc/examples/systemd/ganeti-rapi.service.in
new file mode 100644
index 0000000..260473b
--- /dev/null
+++ b/doc/examples/systemd/ganeti-rapi.service.in
@@ -0,0 +1,19 @@
+[Unit]
+Description = Ganeti RAPI daemon (rapi)
+Documentation = man:ganeti-rapi(8)
+Requires = ganeti-common.service
+Requisite = ganeti-masterd.service
+After = ganeti-common.service
+PartOf = ganeti-master.target
+ConditionPathExists = @LOCALSTATEDIR@/lib/ganeti/rapi.pem
+
+[Service]
+Type = simple
+User = @GNTRAPIUSER@
+Group = @GNTRAPIGROUP@
+ExecStart = @SBINDIR@/ganeti-rapi -f
+SuccessExitStatus = 0 11
+Restart = on-failure
+
+[Install]
+WantedBy = ganeti-master.target ganeti.target
diff --git a/doc/examples/systemd/ganeti.service 
b/doc/examples/systemd/ganeti.service
new file mode 100644
index 0000000..f4ada5d
--- /dev/null
+++ b/doc/examples/systemd/ganeti.service
@@ -0,0 +1,18 @@
+# This is a dummy service, provided only for compatibility with SysV.
+# Systemd will automatically create a SysV service called
+# ganeti.service, attempting to start the initscript. Since there is no
+# way to tell systemd that the initscript acts as ganeti.target (and not
+# ganeti.service), we create a stub service requiring ganeti.target.
+#
+# This service is for compatibility only and so will not be marked for
+# installation.
+
+[Unit]
+Description = Dummy Ganeti SysV compatibility service
+Documentation = man:ganeti(7)
+After = ganeti.target
+Requires = ganeti.target
+
+[Service]
+Type = oneshot
+ExecStart = /bin/true
diff --git a/doc/examples/systemd/ganeti.target 
b/doc/examples/systemd/ganeti.target
new file mode 100644
index 0000000..fc2a3bd
--- /dev/null
+++ b/doc/examples/systemd/ganeti.target
@@ -0,0 +1,8 @@
+[Unit]
+Description = Ganeti virtualization cluster manager
+Documentation = man:ganeti(7)
+PartOf = ganeti.service
+
+[Install]
+WantedBy = multi-user.target
+Also = ganeti-node.target ganeti-master.target
-- 
1.9.1

Reply via email to