modules/microvm: get hypervisors in nomad-jobs to shutdown gracefully
This commit is contained in:
parent
ff9e1ee7ad
commit
84d18b67eb
|
@ -115,10 +115,25 @@ in
|
||||||
pkgs.writeScript "hypervisor-${hostName}" ''
|
pkgs.writeScript "hypervisor-${hostName}" ''
|
||||||
#!${pkgs.runtimeShell} -e
|
#!${pkgs.runtimeShell} -e
|
||||||
cd ${stateDir}
|
cd ${stateDir}
|
||||||
# hook SIGTERM for graceful shutdown (TODO: FIXME)
|
|
||||||
trap ${config.microvm.declaredRunner}/bin/microvm-shutdown TERM
|
|
||||||
# start hypervisor
|
# start hypervisor
|
||||||
${config.microvm.declaredRunner}/bin/microvm-run
|
exec ${config.microvm.declaredRunner}/bin/microvm-run
|
||||||
|
'';
|
||||||
|
stopMicrovm =
|
||||||
|
pkgs.writeScript "hypervisor-${hostName}-stop" ''
|
||||||
|
#!${pkgs.runtimeShell} -e
|
||||||
|
cd ${stateDir}
|
||||||
|
# stop hypervisor on signal
|
||||||
|
function handle_signal() {
|
||||||
|
${config.microvm.declaredRunner}/bin/microvm-shutdown
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
trap handle_signal TERM
|
||||||
|
# wait
|
||||||
|
while true; do
|
||||||
|
sleep 86400 &
|
||||||
|
# catch signals:
|
||||||
|
wait
|
||||||
|
done
|
||||||
'';
|
'';
|
||||||
in pkgs.writeText "${hostName}.job" ''
|
in pkgs.writeText "${hostName}.job" ''
|
||||||
job "${hostName}" {
|
job "${hostName}" {
|
||||||
|
@ -157,6 +172,8 @@ in
|
||||||
config {
|
config {
|
||||||
command = "${runVirtiofsd share}"
|
command = "${runVirtiofsd share}"
|
||||||
}
|
}
|
||||||
|
kill_signal = "SIGCONT"
|
||||||
|
kill_timeout = "15s"
|
||||||
|
|
||||||
resources {
|
resources {
|
||||||
memory = ${toString (config.microvm.vcpu * 32)}
|
memory = ${toString (config.microvm.vcpu * 32)}
|
||||||
|
@ -171,12 +188,24 @@ in
|
||||||
config {
|
config {
|
||||||
command = "${runMicrovm}"
|
command = "${runMicrovm}"
|
||||||
}
|
}
|
||||||
|
# don't get killed immediately but get shutdown by wait-shutdown
|
||||||
|
kill_signal = "SIGCONT"
|
||||||
|
kill_timeout = "15s"
|
||||||
|
|
||||||
resources {
|
resources {
|
||||||
memory = ${toString config.microvm.mem}
|
memory = ${toString config.microvm.mem}
|
||||||
cpu = ${toString (config.microvm.vcpu * 50)}
|
cpu = ${toString (config.microvm.vcpu * 50)}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task "wait-shutdown" {
|
||||||
|
driver = "raw_exec"
|
||||||
|
user = "microvm"
|
||||||
|
config {
|
||||||
|
command = "${stopMicrovm}"
|
||||||
|
}
|
||||||
|
kill_signal = "SIGTERM"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|
Loading…
Reference in New Issue
Block a user