Icono del sitio Binario 0

Sincronización de Tiempo en Linux con Chrony, Scripts Automatizados para Entornos Debian/Ubuntu y RHEL

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

La correcta sincronización del tiempo en los servidores es esencial para garantizar la coherencia en logs, autenticaciones, servicios distribuidos y tareas programadas. Chrony es una alternativa moderna y eficiente a NTP (Network Time Protocol) tradicional, recomendada por muchas distribuciones Linux como sincronizador por defecto.

En este artículo presentamos dos scripts Bash diseñados para automatizar la instalación, configuración y verificación de Chrony, reemplazando cualquier instancia previa de NTP, tanto en sistemas basados en Debian/Ubuntu como en CentOS/RHEL. Los scripts utilizan como servidor de tiempo principal el servicio público confiable time.cloudflare.com.

Script para Debian/Ubuntu con Chrony

Este script:

#!/bin/bash

DC_SERVER="time.cloudflare.com"
CHRONY_CONF="/etc/chrony/chrony.conf"

check_installed() {
dpkg -l | grep -qw "$1"
}

remove_ntp_if_exists() {
if check_installed ntp; then
echo "Eliminando NTP..."
systemctl stop ntp
systemctl disable ntp
apt remove --purge -y ntp
fi
}

install_chrony() {
echo "Instalando Chrony..."
apt update && apt install -y chrony
}

configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF
sed -i 's/^server/#server/g' $CHRONY_CONF
echo "server $DC_SERVER iburst" >> $CHRONY_CONF
systemctl enable chrony
systemctl restart chrony
}

echo "Preparando sistema para usar Chrony..."

remove_ntp_if_exists

if check_installed chrony; then
echo "Chrony ya está instalado."
else
install_chrony
fi

configure_chrony

# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking
chronyc sources -v

Script para CentOS/RHEL con Chrony

Este script realiza la misma función adaptada al entorno de paquetes RPM (CentOS/RHEL).

#!/bin/bash

DC_SERVER="time.cloudflare.com"
CHRONY_CONF="/etc/chrony.conf"

check_installed() {
rpm -q "$1" &>/dev/null
}

remove_ntp_if_exists() {
if check_installed ntp; then
echo "Eliminando NTP..."
systemctl stop ntpd
systemctl disable ntpd
yum remove -y ntp
fi
}

install_chrony() {
echo "Instalando Chrony..."
yum install -y chrony
}

configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF
sed -i 's/^server/#server/g' $CHRONY_CONF
echo "server $DC_SERVER iburst" >> $CHRONY_CONF
systemctl enable chronyd
systemctl restart chronyd
}

echo "Preparando sistema para usar Chrony..."

remove_ntp_if_exists

if check_installed chrony; then
echo "Chrony ya está instalado."
else
install_chrony
fi

configure_chrony

# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking
chronyc sources -v

Consideraciones Finales

Salir de la versión móvil