Had to do some magic to get the xvfb systemd unit installed via puppet (T129320). It is now shipped properly but the service does not start on instance boot.
$ find / -name '*xvfb*' 2>/dev/null /usr/share/man/man1/xvfb-run.1.gz /usr/share/doc/xvfb /usr/bin/xvfb-run /puppet/modules/xvfb /puppet/modules/xvfb/templates/initscripts/xvfb.systemd.erb /puppet/modules/xvfb/templates/initscripts/xvfb.upstart.erb /lib/systemd/system/xvfb.service /var/lib/dpkg/info/xvfb.md5sums /var/lib/dpkg/info/xvfb.list
We have /lib/systemd/system/xvfb.service but that does not seem sufficient to get it to spawn on boot. The unit file is provisioned by puppet and has:
[Unit] Description=Permanent X virtual framebuffer After=network.target [Service] Type=simple ExecStart=/usr/bin/Xvfb :94 -screen 0 1280x1024x24 -ac -noreset Restart=always User=xvfb Group=xvfb [Install] WantedBy=multi-user.target
And we have:
$ find /lib/systemd -iwholename '*multi-user*' /lib/systemd/system/multi-user.target /lib/systemd/system/multi-user.target.wants /lib/systemd/system/multi-user.target.wants/systemd-logind.service /lib/systemd/system/multi-user.target.wants/systemd-user-sessions.service /lib/systemd/system/multi-user.target.wants/systemd-update-utmp-runlevel.service /lib/systemd/system/multi-user.target.wants/getty.target /lib/systemd/system/multi-user.target.wants/systemd-ask-password-wall.path
$ find /etc/systemd -iwholename '*multi-user*' /etc/systemd/system/multi-user.target.wants /etc/systemd/system/multi-user.target.wants/ssh.service /etc/systemd/system/multi-user.target.wants/remote-fs.target /etc/systemd/system/multi-user.target.wants/puppet.service /etc/systemd/system/multi-user.target.wants/etcd.service
On a non Nodepool instance integration-slave-jessie1001.integration.eqiad.wmflabs the unit is loaded but marked as disabled
$ systemctl status xvfb ● xvfb.service - Permanent X virtual framebuffer Loaded: loaded (/lib/systemd/system/xvfb.service; disabled) Active: active (running) since Thu 2016-02-18 21:49:48 UTC; 2 weeks 5 days ago Main PID: 2942 (Xvfb) CGroup: /system.slice/xvfb.service └─2942 /usr/bin/Xvfb :94 -screen 0 1280x1024x24 -ac -noreset $ systemctl show xvfb|grep -i disab UnitFileState=disabled
From https://www.freedesktop.org/wiki/Software/systemd/dbus/
UnitFileState
encodes the install state of the unit file of FragmentPath. It currently knows the following states: enabled, enabled-runtime, linked, linked-runtime, masked, masked-runtime, static, disabled, invalid.enabled indicates that a unit file is permanently enabled.
enable-runtime indicates the unit file is only temporarily enabled, and will no longer be enabled after a reboot (that means, it is enabled via /run symlinks, rather than /etc).
...static indicates that the unit is statically enabled, i.e. always enabled and doesn't need to be enabled explicitly.
invalid indicates that it could not be determined whether the unit file is enabled.
The documentation does not mention disabled but I guess that means the unit is not started on boot.
Looking at the instances console there is no mention of the unit description Permanent X virtual frame buffer. I suspect it is puppet starting up later on.