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