【发布时间】:2017-12-01 12:41:56
【问题描述】:
我正在使用vSphere CLI 6.5.0 从 Perl 脚本重置 VM。这是 Pacemaker 的(专有)STONITH 插件。
STONITH 之后,journalctl -u pacemaker 立即在属于 vSphere CLI 的 vmcontrol.pl 中报告警告。该警告由 Pacemaker 所属的fence_legacy 报告。
Use of uninitialized value $hostname in concatenation (.) or string at
/opt/vmware-vsphere-cli-distrib/apps/vm/vmcontrol.pl line 168.
在此上下文中调用UTIL::trace 时发生错误:
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 ");
};
我想知道这是功能还是错误。难道Vim::get_view 在无法报告主机名(因此无法初始化$hostname)时与 VMware 通信,因为 VM 正在重新启动?
这听起来不太可能(例如,因为对 ResetVM 的调用发生在分配给 $hostname 之后),但我怀疑这样的事情正在发生,在这种情况下可以忽略警告。我还怀疑该问题仅与 vSphere CLI 有关(即不是由它在 Pacemaker 堆栈中的使用引起的)。
【问题讨论】:
-
作为一个独立的脚本,我没有遇到 vmcontrol 的任何问题。我对其他两个项目不熟悉。您是否尝试过将 vmcontrol 作为独立脚本运行?
-
@KyleRuddy 这也是我打算做的。完成后我会在这里报告。
标签: perl vmware vsphere pacemaker stonith