Configuración de sincronización horaria con NTP o Chrony en sistemas Linux usando Ansible

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

Automatizar mediante Ansible la verificación, instalación y configuración del servicio de sincronización horaria en sistemas basados en Debian/Ubuntu. El playbook considera si están presentes los servicios Chrony o NTP, configurando uno u otro en función del estado del sistema.

Descripción de tareas

  1. Verificación de servicios instalados:
    • Se comprueba si chrony y ntp están instalados usando comandos dpkg.
  2. Instalación condicional:
    • Si ninguno está instalado, se instala ntp.
  3. Configuración de servicio de tiempo:
    • Si ntp está presente, se edita el fichero /etc/ntp.conf para:
      • Comentar líneas de servidores previas.
      • Añadir un nuevo servidor.
      • Añadir restricciones de seguridad.
      • Habilitar y reiniciar el servicio.
    • Si chrony está instalado:
      • Se comentan entradas pool y server en /etc/chrony/chrony.conf.
      • Se añade el nuevo servidor.
      • Se reinicia y habilita el servicio.
  4. Verificación de estado:
    • Se muestran el estado actual de sincronización (timedatectl) y las fuentes de tiempo (ntpq o chronyc).

Requisitos previos

  • Ansible instalado en el nodo de control.
  • Acceso root o sudo sin contraseña en los nodos gestionados.
  • Variable ntp_server definida (por ejemplo, ntp_server: "0.pool.ntp.org").

Código YAML del playbook

---
- name: Configurar sincronización horaria con NTP o Chrony
hosts: all
become: yes
vars:
ntp_server: "0.pool.ntp.org"

tasks:

- name: Verificar si Chrony está instalado
ansible.builtin.shell: dpkg -l | grep -qw chrony
register: chrony_installed
ignore_errors: true

- name: Verificar si NTP está instalado
ansible.builtin.shell: dpkg -l | grep -qw ntp
register: ntp_installed
ignore_errors: true

- name: Instalar NTP si no está instalado ni Chrony
ansible.builtin.apt:
name: ntp
state: present
when: ntp_installed.rc != 0 and chrony_installed.rc != 0

- name: Configurar NTP
when: ntp_installed.rc == 0 or (ntp_installed.rc != 0 and chrony_installed.rc != 0)
block:

- name: Comentar servidores existentes en ntp.conf
ansible.builtin.replace:
path: /etc/ntp.conf
regexp: '^server'
replace: '#server'

- name: Añadir nuevo servidor NTP
ansible.builtin.lineinfile:
path: /etc/ntp.conf
line: "server {{ ntp_server }} iburst"
insertafter: EOF

- name: Añadir restricciones NTP
ansible.builtin.blockinfile:
path: /etc/ntp.conf
block: |
restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1

- name: Habilitar y reiniciar servicio NTP
ansible.builtin.service:
name: ntp
state: restarted
enabled: yes

- name: Configurar Chrony
when: chrony_installed.rc == 0
block:

- name: Comentar servidores pool y server en chrony.conf
ansible.builtin.replace:
path: /etc/chrony/chrony.conf
regexp: '^(pool|server)'
replace: '#\1'

- name: Añadir nuevo servidor Chrony
ansible.builtin.lineinfile:
path: /etc/chrony/chrony.conf
line: "server {{ ntp_server }} iburst"
insertafter: EOF

- name: Habilitar y reiniciar servicio Chrony
ansible.builtin.service:
name: chrony
state: restarted
enabled: yes

- name: Mostrar estado de la hora del sistema
ansible.builtin.shell: timedatectl status
register: time_status
changed_when: false

- name: Mostrar fuentes NTP/Chrony
ansible.builtin.shell: |
ntpq -p || chronyc sources -v
register: ntp_sources
changed_when: false

- name: Mostrar resultados de verificación
ansible.builtin.debug:
msg: |
{{ time_status.stdout }}
{{ ntp_sources.stdout }}

Resultado esperado

Al finalizar la ejecución del playbook:

  • Tendrás uno de los dos servicios de sincronización activos (Chrony o NTP).
  • El sistema estará configurado para utilizar el servidor definido en ntp_server.
  • Verás en pantalla el estado de sincronización y las fuentes NTP activas.
Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.