Ich habe eine Vagrant-Box mit Ubuntu 15.04, die über ein Upstart-Skript verfügt, das beim Systemstart einen Dienst startet. Es hat eine start on vagrant-mounted
Strophe, weil der Dienst erfordert, dass das Verzeichnis /vagrant von Vagrant gemountet wird.
Ich migriere dieses Skript jetzt zu systemd (was für mich völlig neu ist) und kann das Skript beim Booten nicht erfolgreich ausführen, da /vagrant beim Ausführen des Skripts nicht gemountet ist. After=vagrant-mounted
Funktioniert nicht, hilft aber möglicherweise zu zeigen, was ich versuche.
Wie führe ich eine systemd-Einheit aus, wenn während des Bootens ein Vagrant-Verzeichnis gemountet wurde?
Notizsystemctl start my.service
tutStarten Sie den Dienst erfolgreich und der Dienst ist systemctl enabled
beendet.
Antwort1
Nach meinem Verständnis der Vagrant-Startreihenfolge wird Vagrant /vagrant
(und alle anderen von Ihnen definierten gemeinsam genutzten Dateisysteme) nach Abschluss der Startreihenfolge per SSH gemountet.
Daher möchten Sie wahrscheinlich systemctl start my.service
einen Provisioner verwenden, mitrun: always
angegeben, sodass der Provisioner bei jedem Booten ausgeführt wird und nicht nur bei der ersten Erstellung der VM.
Dies wäre nicht erforderlich, wenn systemd erkennen könnte, wann ein Dateisystem gemountet wurde. Zu meiner Überraschung kann ich jedoch keinen Hinweis darauf finden, dass systemd eine solche Funktion unterstützt.