Esta mañana estaba revisando unos logs cuando de repente... sorpresa!!! la hora de las entradas del log no tenían sentido ninguno. El problema evidente era que la hora del sistema no era la correcta, así que me puse a revisar la configuración del cliente ntp y... voilá! estaban mal. El paso siguiente y evidente era corregir la configuración del cliente ntp, pero claro (y por murphy...), no en un único ESX, ... ¡sino en todo el datacenter!. Solución, script al canto. En este caso tres oneliner:
- Un OneLiner para consultar la configuración ntp de todos los hosts del datacenter:
Get-VMHost |Sort Name|Select Name, @{N=“NTPServer“;E={$_ |Get-VMHostNtpServer}}, @{N=“ServiceRunning“;E={(Get-VmHostService -VMHost $_ |Where-Object {$_.key-eq “ntpd“}).Running}}
- Otro OneLiner para eliminar los servidores incorrectos, ya que no se puede hacer sustituciones directamente:
Get-VMHost | Sort Name | Remove-VMHostNtpServer @("servidor1","servidor2",...)
- Otro para añadir la configuración correcta de servidores:
Get-VMHost | Sort Name | Add-VMHostNtpServer -NtpServer @("servidor1","servidor2",...)
- Y el último para reiniciar el servicio de ntp, para que el servicio actualice los cambios en la configuración:
Get-VmHostService -VMHost (Get-VMHost | Sort Name) | Where_Object {$_.key -eq "ntpd"} | Restart-VMHostService
Aprovecho ya también para llamaros la atención sobre este último OneLiner. Si observais, básicamente lo que hace este OneLiner es localizar un servicio, en nuestro caso
ntpd y reiniciar el servicio. Si cambiais
ntpd por el nombre del servicio que os interese y el cmdlet
Restart-VMHostService por
Start-VMHostService o
Stop-VMHostService, podeis gestionar los servicios de los ESX de vuestro datacenter de forma remota. Por supuesto, esta no es la única forma de hacerlo, simplemente una más :).