Ich verwende vSphere CLI 6.5.0 zum Zurücksetzen einer VM aus einem Perl-Skript. Dies ist im Kontext ein (proprietäres) STONITH-Plugin für Pacemaker.
Unmittelbar nach STONITH meldet journalctl -u pacemaker
eine Warnung in vmcontrol.pl
, die zu vSphere CLI gehört. Die Warnung wird von fence_legacy
gemeldet, die zu Pacemaker gehört.
Use of uninitialized value $hostname in concatenation (.) or string at
/opt/vmware-vsphere-cli-distrib/apps/vm/vmcontrol.pl line 168.
Der Fehler tritt in einem Aufruf von UTIL::trace
in diesem Zusammenhang:
sub reset_vm {
foreach (@$vm_views) {
my $mor_host = $_->runtime->host;
my $hostname = Vim::get_view(mo_ref => $mor_host)->name;
eval {
$_->ResetVM();
Util::trace(0, "\nvirtual machine '" . $_->name . "' under host".
" $hostname reset successfully ");
};
Ich frage mich, ob dies ein Feature oder ein Bug. Könnte es sein, dass Vim::get_view
mit VMware zu einem Zeitpunkt kommuniziert, an dem der Hostname nicht gemeldet werden kann (und daher $hostname
nicht initialisiert werden kann), weil die VM neu gestartet wird?
Es klingt unwahrscheinlich (z. B., weil der Aufruf an ResetVM
nach der Zuweisung an $hostname
auftritt), aber ich vermute, dass so etwas passiert, in diesem Fall könnte die Warnung ignoriert werden. Ich vermute auch, dass das Problem nur mit vSphere CLI zusammenhängt (d. H. Nicht durch seine Verwendung in einem Pacemaker-Stack verursacht wird).
Als eigenständiges Skript, ich habe keine Probleme mit vmcontrol. Ich kenne die anderen beiden Gegenstände nicht. Haben Sie versucht, vmcontrol als eigenständiges Skript auszuführen? –
@KyleRuddy Genau das plane ich auch. Ich melde mich hier, sobald es fertig ist. – rookie09