Cómo desplegar NRPE en Rocky Linux con Ansible
Si gestionamos un gran parque informático, con centenares o miles de servidores, ya sean virtuales o físicos, no tiene mucho sentido añadir uno por uno a nuestro sistema de monitoreo de turno, como por ejemplo Nagios. Sin duda se pueden crear maquetas, en el caso de servidores virtuales, o bien usar guiones en bash, para realizar los despliegues del agente NRPE. Es aquí donde os quiero enseñar como desplegar de forma fácil los paquetes necesarios, para conectar los hosts con Nagios, con su respectiva configuración, utilizando Ansible.
La idea en utilizar un servidor central con Ansible, o bien utilizar el propio host de Nagios, con ese fin. En la web ya os expliqué la instalación de Ansible GNU Linux, por lo que esa parte me la saltaré.
Cómo desplegar NRPE en Rocky Linux con Ansible
Una vez ya tenemos nuestra máquina preparada, con Ansible instalado, es importante que realicemos intercambio de llaves SSH con todos los hosts del inventario, que así deseemos. Una vez hecho esto debemos añadir los hosts que nos interesen en el fichero «/etc/ansible/hosts«
En este ejemplo voy a utilizar, tanto como para servidor Nagios, como para el servidor cliente, tres VPS, que tengo alojados en mi proveedor de confianza Clouding.io
- servnagios.bitsandlinux.com – IP privada 10.20.10.6
- servftp.bitsandlinux.com – IP privada 10.20.10.5
- servrockytest.bitsandlinux.com – IP privada 10.20.10.7
Por lo que, solo añadiremos el servidor cliente:
#Justo al final del fichero /etc/ansible/hosts [cloudingio] servftp.bitsandlinux.com<br />servrockytest.bitsandlinux.com
En ambos casos he habilitado la IP privada, para no tener que utilizar la pública en las comunicaciones entre los hosts. Además, tengo añadido en el fichero «/etc/hosts«, las IP y los nombres de los servidores.
Creamos el Playbook
Los libros de jugadas o “Playbooks” son archivos de configuración en formato YAML, que describen una serie de tareas a ejecutar. En nuestro caso, primero queremos que instale NRPE, para después instalar los plugins de Nagios, y por último configurar NRPE.
Creamos una carpeta para los ficheros YAML:
mkdir -p /etc/ansible/playbooks
Y creamos el fichero:
vim /etc/ansible/playbooks/nrpe-despliegue.yaml
Con este contenido:
--- - hosts: cloudingio remote_user: root vars: nagios_plugin_version: 2.3.3 nagios_plugin_url: "https://nagios-plugins.org/download/nagios-plugins-{{ nagios_plugin_version }}.tar.gz" nagios_install_dir: "/tmp/nagios-plugins-{{ nagios_plugin_version }}" tasks: - name: enable repo epel dnf: name: epel-release state: latest - name: install Development Tools dnf: name: '@Development tools' state: present - name: install openssl-devel dnf: name: openssl-devel state: present - name: install nrpe dnf: name: nrpe state: latest - name: download last version nagios-plugins get_url: url: "{{ nagios_plugin_url }}" dest: "/tmp/{{ nagios_plugin_version }}.tar.gz" register: nagios_plugin_source - name: unpacking nagios-plugins unarchive: copy: no dest: /tmp/ src: "{{ nagios_plugin_source.dest }}" when: nagios_plugin_source.changed register: nagios_plugin_source_unpack - name: configuring nagios-plugins source command: "./configure --with-nagios-user=nagios --with-nagios-group=nagios" args: chdir: "{{ nagios_install_dir }}" when: nagios_plugin_source_unpack.changed register: nagios_plugin_configure - name: make nagios plugins become: yes shell: make args: chdir: "{{ nagios_install_dir }}" when: nagios_plugin_configure.changed register: nagios_plugin_make - name: make install nagios plugins become: yes shell: make install args: chdir: "{{ nagios_install_dir }}" when: nagios_plugin_make.changed
Una vez hecho esto, guardamos y salimos.
Resumo un poco lo que hacemos. Primero de todo declaramos las variables que vamos a utilizar, estas son la versión de los plugins de Nagios, la URL de descarga y directorio donde se ubicará. En lo que respecta a las tareas, primero habilitamos el repositorio EPEL, para después instalar los paquetes y librerías necesarias para compilar el código. Después instalamos el propio NRPE, para después descargar los Nagios plugins y posteriormente compilarlos.
Para desplegar el Playbook, debemos escribir:
ansible-playbook nrpe-despliegue.yaml
Configurar NRPE
Ahora debemos crear el fichero de configuración, llamado «nrpe.cfg», en la misma ubicación que el fichero anterior:
vim /etc/ansible/playbooks/nrpe.cfg
Y añadimos:
# bind to all interfaces server_address=0.0.0.0 # allow neteye allowed_hosts=127.0.0.1,10.20.10.6 # allow command args dont_blame_nrpe=1 # example of commands command[check_diskspace_arg]=/usr/lib/nagios/libexec/check_disk $ARG1$ command[check_load_arg]=/usr/lib/nagios/libexec/check_load $ARG1$ command[check_procs_arg]=/usr/lib/nagios/libexec/check_procs $ARG1$ command[check_users_arg]=/usr/lib/nagios/libexec/check_users $ARG1$
Y ahora, al fichero «nrpe-despliegue.yaml», justo al final, añadimos:
- name: deploy nrpe.cfg copy: src: nrpe.cfg dest: /etc/nrpe.d/nrpe.cfg register: deploy_nrpe - name: start/restart and enable nrpe systemd: name: nrpe state: restarted enabled: yes when: deploy_nrpe.changed
Y volvemos a ejecutar el playbook:
ansible-playbook nrpe-despliegue.yaml
Aquí podéis ver un ejemplo de los mensajes del despliegue, cuando añadimos una segunda máquina cliente:
De esta manera, hemos visto lo fácil que es realizar despliegues del agente de NRPE, en los nuevos hosts.
Y esto es todo por hoy. En el libro de jugadas podemos hacer muchas cosas, como por ejemplo, indicar que, según la distribución GNU/Linux que sea, hacer una cosa u otra. La verdad que Ansible tiene una infinidad de posibilidades. ¿Tienes experiencia con Ansible? ¿Cómo hubieras planteado el libro de jugadas? ¿Prefieres Ansible a Puppet o Chef? Por favor, deja tus respuestas en los comentarios. ¡Gracias!
Fuentes consultadas
Neteye-blog.com – How to Deploy NRPE on CentOS 7 with Ansible