Categorías
Ansible

Instalar Chrony con Ansible.

Ansible Logo

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​.

(Extraído de Wikipeida)

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
Prueba de ejecución de un playbook.

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"
La salida del comando, da error mi ntp server que no tiene este servicio en ejecución.

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"
Salida de pantalla de la ejecución de los comandos:
ansible all -a «date»
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
Salida del comando: ansible rbpiz-001.sismonda.local -a «chronyc -a makestep» -b –become-user root

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.