Hallo Leute!
Ich kämpfe seit eine Woche mit diesem Problem und habe keine Lösung in Sicht...
Folgendes: wir testen gerade auf Arbeit oVirt (http://www.ovirt.org/). Wir haben deswegen einen Server, auf dem der "Engine" läuft und zwei Hosts, auf den die VMs laufen. Alles läuft prima, die Maschine können auch live von einem Host zu den anderen migriert werden, sobald man über die Webschnittstelle oder die REST-Schnittstelle den Host in "maintenance" setzt.
Nun zum Problem: anscheinend verstehen die Leute von oVirt unter den Begriff "Cluster" was anderes als den Rest der Welt, so dass, wenn ein Host verschwindet ist für oVirt kein Grund eine Migration der VMs zu starten...
Gut, Kernel-Panic sind relativ selten, eventuell können wir auch damit leben. Die Hosts sind auch an USV angeschlossen, so dass beim Stromausfall ein sauberes Shutdown möglich ist, also kein Problem! Aber Neustart des Hosts wegen Updates oder ähnliches passiert schon öfter. Was wir wollen ist eine Möglichkeit, dass der Host in "maintenance" gesetzt wird, wenn ein shutdown gestartet wird, ohne dass jemand sich in der Webschnittstelle anmelden muss und das per Hand machen.
Ich habe deswegen ein kleines Python-Skript gebastelt, das genau das macht. Das funktioniert auch gut. Das Problem ist jetzt nur, dieses Skript VOR dem Shutdown automatisch zu starten...
Auf den Hosts läuft CentOS 7, der mit Systemd arbeitet. Das Dreck hasse ich wie die Pest und bisher hat er leider den Kampf gewonnen...
Ich habe ein Skript gebastelt, das in der Theorie nach dem Start des Rechners und vor dem Shutdown aufgerufen werden soll:
[Unit] Description=oVirt interface for managing host After=vdsmd.service vdsm-network.service libvirtd.service
[Service] Type=simple RemainAfterExit=yes ExecStart=/usr/local/bin/ovirt-maintenance.sh active ExecStop=/usr/local/bin/ovirt-maintenance.sh maintenance KillMode=none
[Install] WantedBy=multi-user.target
Nur geht es nicht... Es wird zwar beim Hochfahren aufgerufen (so dass mein Skript ovirt-maintenance.sh mit dem Parameter active aufgerufen wird) und beim Shutdown mit dem Parameter maintenance, aber:
1) es wird zu spät aufgerufen (nachdem libvirt schon gestoppt worden ist) 2) das System wartet überhaupt nicht, dass das Skript fertig ist...
Kann jemand mir helfen und mir sagen, was ich falsch mache?
Danke sehr! Luca Bertoncello (lucabert@lucabert.de)