我按照说明进行操作官方 vMA 指南 5.1(pdf),而下面的操作(见p18~p19)让我很困惑。
我已将我的 vMA 加入到我的 Windows AD velab.chj ,重新启动 vMA,然后操作如下:
可以看到,我无法esxcli system version get
以 Windows AD 用户(chjadmin)的身份执行。我认为这是合理的,因为 ESXi 主机没有为 AD 用户 chjadmin 分配任何权限,甚至不知道其存在。
所以,我的问题是,如何配置 ESXi 主机以允许 chjadmin 执行命令esxcli
?官方的 vMA 指南似乎没有谈到这一点。
答案1
vMA 指南假定您已采取措施将 ESXi 主机加入到 Active Directory 并授予允许运行这些命令的权限。
相关文档可以查阅这里在 ESXi 和 vCenter Server 5.5 文档中。具体在以下部分vSphere 安全 - 保护 ESXi 主机 - 使用 Active Directory 管理 ESXi 用户。
答案2
感谢 Ryan 的文档提示。我找到了正确的方向。
首先,我必须将我的 ESXi 机器加入 Windows AD,这可以通过 viclient 完成。
其次,根据 VMware vSphere 的文档,我必须创建一个名为ESX 管理员(别废话,必须使用这个组名)并让 chjadmin 成为其中的成员。
现在,我可以esxcli
使用 AD 用户身份执行:
esxcli --server=172.27.120.147 -u chjadmin -p 123456 system version get
我确认上述命令不依赖于先决条件,vifp addserver 172.27.120.147 ....
并且它执行迅速地(两秒钟后)。
到目前为止,一切都很好。
然而,还有一个问题,vifp 命令执行得太慢了。
vifp addserver 172.27.120.147 --authpolicy adauth --username 'velab.chj\chjadmin' # costs 10 seconds
vifptarget -s 172.27.120.147 # cost 30+ seconds
它们怎么会花这么长时间?
更糟糕的是,在我执行vifptarget -c
退出之前默认 ESXi 目标上下文,命令行上每次按 Enter 都要花费 20+ 秒的时间。这里面发生了什么?
我很快意识到 PS1 内部可能出了问题。结果确实如此。
命令
LD_PRELOAD=`__get_ld_preload_without_vmalibs` /opt/vmware/vma/bin/vitargetquery.sh
执行时间很长,20多秒。有人能帮忙解释一下吗?
顺便说一句:我定制的 PS1 是(逐字来自 Bash 命令行):
PS1="\n[\[\033[32m\]$(tty) \d \t\[\033[31m\] jobs:\j\[\033[0m\] "'ERR:$?$(if [ $? != 0 ];then echo -e \a; fi)] \n'"[\u @\h \[\033[33m\w\033[0m\]]\n\[\033[1;37;44m\]#\[\033[0m\] "
[更新] vifp 命令执行缓慢问题已解决
/opt/vmware/vma/bin/vifptarget
阅读和的 Bash 源代码/opt/vmware/vma/bin/vitargetquery.sh
,我发现它们都执行fastVmaTargetCheck
像这样的真实二进制文件/opt/vmware/vma/sbin/fastVmaTargetCheck 172.27.120.147
,其中大部分时间都被消耗了。
由于我没有源代码fastVmaTargetCheck
,我想到了一个办法,即对 vMA 机器进行数据包嗅探,最后找出原因。fastVmaTargetCheck 172.27.120.147
无条件地对 172.27.120.147 发出反向 DNS 查找,超时时间大约为 12 秒,而我的内联网 DNS 服务器没有反向查找区域,因此它将查询转发到 Internet DNS 服务器,这也超时了。vifp 命令多次执行此类查询,因此我发现执行速度很慢。解决方案是,将反向查找区域添加120.27.172.in-addr.arpa
到我的 DNS 服务器,以便为 vMA 提供即时答案(无论是正面还是负面),执行延迟就会消失。