Configurar cliente nut con Ansible

Nut Logo

Me encontré haciendo un poco de housekeeping que tenía varios equipos en los cuales debía configurar el cliente nut para que puedan apagarse ante un corte de energía. El tener el cliente me permite proteger los equipos y la información ante los cortes de luz. Me pareció una buena oportunidad de armar una receta que me permita orquestar todos los clientes.

La configuración del servidor y el cliente la documenté en este post. Pero quería automatizar el proceso para no tener que ejecutarlo en forma repetida y me permita ajustar la configuración en forma fácil en caso de que sea necesario.

La Receta:

La receta para configurar el cliente nut es bastante simple. Debemos primero instalar el paquete y después copiar 3 archivos de configuración.

La receta propiamente dicha. En este caso la UPS esta configurada en mi equipo rbpi4-002, a ese equipo no lo quiero impactar con los cambios, así que en la receta aclaro que es a todos menos a este.

---
- hosts: all:!rbpi4-002.sismonda.local 
  become: yes 

  tasks:
  - name: Instalar Nut.
    package:
      name: 
       - nut 
      state: latest

  - name: Copiar nut.conf.
    template:
      src: /etc/ansible/utils/nut/nut.conf 
      dest: /etc/nut/nut.conf
      owner: root
      group: nut
      mode: 0640
      backup: yes

  - name: Copiar upsmon.conf.
    template:
      src: /etc/ansible/utils/nut/upsmon.conf 
      dest: /etc/nut/upsmon.conf
      owner: root
      group: nut
      mode: 0640

  - name: Copiar upssched.conf.
    template:
      src: /etc/ansible/utils/nut/upssched.conf 
      dest: /etc/nut/upssched.conf
      owner: root
      group: nut
      mode: 0640

  - name: Verificar ejecución de Nut.
    systemd: 
      name: nut-client 
      state: started
      daemon_reload: yes
      enabled: yes

Pueden descargar el archivo de la receta de ansible para instalar el cliente nut desde mi github.

Los archivos de configuración también estas en github. Tengan en cuenta que en upsmon.conf tiene que configurar el nombre de la ups que les provee energía, la ip del equipo que la administra el usuario y la contraseña. Todo esto en la primer línea.
En este caso la UPS es una APC 1100 pero la llame qnapups porque sino mi nas no la vé. Tiene embebido el cliente pero te fuerzan a que la UPS se llame así.

Esta explicado como instalar el servidor y el cliente con más detalle en este post.

El primer paso antes de ejecutar la receta es hacer el chequeo previo, para revisar que ansible tenga acceso a todos los archivos de configuración y sobre todo que no me impacte sobre el equipo en el cual esta conectada la ups.

La prueba la ejecuto con al sentencia:

ansible-playbook /etc/ansible/utils/nut-client.yml --check
Prueba de ejecución de la receta para configurar cliente nut en los equipos de nuestra infraestructura.

Habiendo verificado que no impactaba en mi servidor Nut, ejecute la receta.

ansible-playbook /etc/ansible/utils/nut-client.yml

En unos segundos tenía todos mis equipos con linux vinculados a la ups.

Salida de la ejecución de la receta para configurar cliente nut en los servidores definidos en Ansible.

Para verificar que todo siguió andando ejecute el comando

watch systemctl status nut-server.service

Donde pude ir viendo los reinicio de los servicios en los que ya tenían instalado el cliente y los que se fueron sumando.

Salida de systemctl status nut-server.service

Deja un comentario

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