En este procedimiento voy a proceder a instalar chrony con una receta de Ansible. Voy a tener preconfigurado un archivo de configuración apuntando a mi servidor ntp. En la configuración de la receta voy a omitir que impacte en dicho equipo.
Chrony viene por defecto en las distribuciones de Red Hatimpl_soft 1 y está disponible en los repositorios de Ubuntuimpl_soft 2, está orientado a los ordenadores comunes y corrientes, los cuales son inestables, entran en modo de suspensión o tienen conexión de manera intermitente con internet. Estos conceptos también para máquinas virtuales, un ambiente mucho más inestable.
Chrony se caracteriza por su bajo consumo de recursos y soporta ambos protocolos muy bien (NTP y PTP), esta compuesto por dos componentes principales: chronyd un demonio que se ejecuta al iniciar la computadora y chronyc una interfaz por línea de comandos al usuario para su configuración.
Ha sido evaluado como muy seguro y con apenas unas cuantas incidenciasimpl_soft 3, su ventaja es la versatilidad de su código, escrito desde cero para evitar la complejidad de códigoimpl_soft 4. Chrony está escrito bajo licencia Licencia Pública General de GNU, versión 2 y fue escrito por Richard Curnow en 1997 con otros colaboradores y actualmente es mantenido por Miroslav Lichvar y el desarrollo y mantenimiento está patrocinado por Red Hatimpl_soft 5.
La receta para instalar chrony con Ansible:
En la receta procedo a aplicar el cambio a todos los servidores menos a rbpi3-001, la misma esta compuesta por 3 tareas:
- Instalar chrony.
- Copiar el archivo de configuración.
- Verificar que el servicio quede funcionando.
La receta:
cat /etc/ansible/utils/chrony.yml
--- - hosts: all:!rbpi3-001.sismonda.local become: yes tasks: - name: Instalar Chrony. package: name: - chrony state: latest - name: Copiar chrony.conf. template: src: /etc/ansible/utils/chrony/chrony.conf dest: /etc/chrony/chrony.conf owner: root group: root mode: 0644 backup: yes - name: Verificar ejecución de Chrony. systemd: name: chrony state: started daemon_reload: yes enabled: yes
El archivo de configuración:
cat /etc/ansible/utils/chrony/chrony.conf
# Welcome to the chrony configuration file. See chrony.conf(5) for more # information about usuable directives. # This will use (up to): # - 4 sources from ntp.ubuntu.com which some are ipv6 enabled # - 2 sources from 2.ubuntu.pool.ntp.org which is ipv6 enabled as well # - 1 source from [01].ubuntu.pool.ntp.org each (ipv4 only atm) # This means by default, up to 6 dual-stack and up to 2 additional IPv4-only # sources will be used. # At the same time it retains some protection against one of the entries being # down (compare to just using one of the lines). See (LP: #1754358) for the # discussion. # # About using servers from the NTP Pool Project in general see (LP: #104525). # Approved by Ubuntu Technical Board on 2011-02-08. # See http://www.pool.ntp.org/join.html for more information. #pool ntp.ubuntu.com iburst maxsources 4 #pool 0.ubuntu.pool.ntp.org iburst maxsources 1 #pool 1.ubuntu.pool.ntp.org iburst maxsources 1 #pool 2.ubuntu.pool.ntp.org iburst maxsources 2 server 10.0.0.31 # This directive specify the location of the file containing ID/key pairs for # NTP authentication. keyfile /etc/chrony/chrony.keys # This directive specify the file into which chronyd will store the rate # information. driftfile /var/lib/chrony/chrony.drift # Uncomment the following line to turn logging on. #log tracking measurements statistics # Log files location. logdir /var/log/chrony # Stop bad estimates upsetting machine clock. maxupdateskew 100.0 # This directive enables kernel synchronisation (every 11 minutes) of the # real-time clock. Note that it can’t be used along with the 'rtcfile' directive. rtcsync # Step the system clock instead of slewing it if the adjustment is larger than # one second, but only in the first three clock updates. makestep 1 3
Procedimiento:
Previo a la ejecución de cualquier receta es conveniente hacer una prueba de vuelo con el parámetro «–check».
En este caso quería asegurarme de que la receta no impacte en el servidor rbpi3-001 que es mi servidor NTP. (Si fallaba la instalación de «chrony» implicaba remover el paquete NTPSEC).
ansible-playbook /etc/ansible/utils/chrony.yml --check
En la salida de la prueba detecto que el equipo alphaprime.sismonda.local esta fuera de línea. Y en el resumen veo que el equipo rbpi3-001 fue eximido de la corrida.
Sí la ejecución del chequeo fue exitosa podemos aplicar los cambios ejecutando el comando sin el –check.
ansible-playbook /etc/ansible/utils/chrony.yml
Es siempre conveniente verificar que el demonio este funcionando en forma correcta, debemos ejecutar el siguiente comando en nuestro servidor ansible.
ansible all -a "chronyc sources"
Opcionales
Morar la hora de un servidor o grupo o todos:
Ansible permite ejecutar comandos a todos lo servidores definidos en el archivo /etc/ansible/hosts, a un grupo definido en dicho archivo (en el ejemplo use el grupo rbpiz o a un servidor).
ansible rbpiz -a "date"
Forzar en forma brusca el ajuste de la hora de un servidor:
Podemos en caso de que uno de los servidores estén con un delta muy grande en la hora del sistema forzar el ajuste en forma abrupta (chrony lo va a hacer en forma paulatina para que no generar complicaciones en bases de datos, apliaciones y logs ).
ansible rbpiz-002.sismonda.local -a "chronyc -a makestep" -b --become-user root