使用PowerCLI给ESXi批量设置时间和配置NTP
在现代的各种业务系统中,时间同步很重要。现在VMware的虚拟化解决方案应用非常广泛,给ESXi宿主机一个统一准确的时间,也给客户机系统一个准确的时间。
生产环境中主机数量少的话倒是可以手动设置,但是到了十几台甚至更多,手动设置费时费力还容易出错。好吧,相信你也比较懒。但是我们懒人有懒办法呀。
关于VMware PowerCLI是什么东西,以及如何安装,在 命令行操作vSphere--VMware PowerCLI安装 这篇文章里有详细介绍,此处不再叨叨啦。
原理嘛就是用PowerCLI连接到VC上边去,给ESXi下发配置并配置重启ntp,ESXi所有的高级设置都可以设置,我发现PowerCLI真是个好东西!
好了,下面就直接丢代码出来了。下面介绍了一次性设置时间和设置NTP两种方式,各取所需。当然,都是全自动的。推荐架设内网NTP的方式。
#连接VC $VC='192.168.xx' $UName='administrator@vsphere.local' $UPass='yourpass' Connect-VIServer -Server $VC -User $UName -Password $UPass #方案一:模拟手动更改主机时间 Foreach($HostIP in Get-VMHost){ $esxcli = Get-EsxCli -VMHost $HostIP -V2 $arguments = $esxcli.system.time.set.CreateArgs() $arguments.year = $(Get-Date -Format 'yyyy') $arguments.month = $(Get-Date -Format 'MM') $arguments.day = $(Get-Date -Format 'dd') $arguments.hour = $(Get-Date -Format 'HH')-8 $arguments.min = $(Get-Date -Format 'mm') $esxcli.system.time.set.Invoke($arguments) } #方案二:设置NTP(推荐) Foreach($HostIP in Get-VMHost){ Add-VmHostNtpServer -NtpServer "120.25.115.20" -VMHost $HostIP Add-VmHostNtpServer -NtpServer "ntp1.aliyun.com" -VMHost $HostIP Get-VMHostService -VMHost $HostIP | where { $_.Key -eq "ntpd" } | Start-VMHostService Get-VMHostService -VMHost $HostIP | where { $_.Key -eq "ntpd" } | Set-VMHostService -Policy "on" -Confirm:$false } #查询主机时间 Foreach($HostIP in Get-VMHost){ $esxcli = Get-EsxCli -VMHost $HostIP -V2 $esxcli.system.time.get.Invoke() }
Get-VMHost获取的是当前VC下边的所有主机,作用范畴也是当前VC下边的所有主机。
步骤解读:第一个代码块是连接VC,第二个是获取你本机的当前时间设置到ESXi主机,第三个是设置NTP并重启服务与设置开机自启,第四个是查询下各主机时间。相信小伙伴们一看就懂了!
此处demo中的主机是用的IP标识的,建议使用DNS名称来区分标识主机。