在現代的各種業務系統中,時間同步很重要。現在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名稱來區分標識主機。