After spending a while fighting with upstart, at work, I decided that systemd couldn't be any worse and yesterday morning upgraded one of my servers to run it.
I have two classes of servers:
- Those that run standard daemons, with nothing special.
- Those that run different services under runit
- For example docker guests, node.js applications, and similar.
I thought it would be a fair test to upgrade one of each systems, to see how it worked.
The Debian wiki has instructions for installing Systemd, and both systems came up just fine.
Although I realize I should replace my current runit jobs with systemd units I didn't want to do that. So I wrote a systemd .service file to launch runit against /etc/service, as expected, and that was fine.
Docker was a special case. I wrote a docker.service + docker.socket file to launch the deamon, but when I wrote a graphite.service file to start a docker instance it kept on restarting, or failing to stop.
In short I couldn't use systemd to manage running a docker guest, but that was probably user-error. For the moment the docker-host has a shell script in root's home directory to launch the guest:
#!/bin/sh # # Run Graphite in a detached state. # /usr/bin/docker run -d -t -i -p 8080:80 -p 2003:2003 skxskx/graphite
Without getting into politics (ha), systemd installation seemed simple, resulted in a faster boot, and didn't cause me horrific problems. Yet.
ObRandom: Not sure how systemd is controlling prosody, for example. If I run the status command I can see it is using the legacy system:
root@chat ~ # systemctl status prosody.service prosody.service - LSB: Prosody XMPP Server Loaded: loaded (/etc/init.d/prosody) Active: active (running) since Wed, 03 Sep 2014 07:59:44 +0100; 18h ago CGroup: name=systemd:/system/prosody.service └ 942 lua5.1 /usr/bin/prosody
I've installed systemd and systemd-sysv, so I thought /etc/init.d was obsolete. I guess it is making pretend-services for things it doesn't know about (because obviously not all packages contain /lib/systemd/system entries), but I'm unsure how that works.
Tags: docker, systemd, wheezy 5 comments
sysvinit compatibility is one of the awesome features. It will create a service stub for all init scripts unless there's a identically named systemd service file for them. So you can depend on init scripts from systemd services (and vice versa, through LSB headers).