Automatización IT Omnishell

Introducción a Omnishell

Versión Enterprise.Versión NG 741 o superior.

Omnishell es una funcionalidad Enterprise de Pandora FMS que se utiliza para la orquestación/automatización TI. Es una herramienta, totalmente nativa e integrada en la consola y agentes de PFMS que permite definir comandos o bloques de comandos y seleccionar objetivos donde poder ejecutarlos. Puede obtener más información en el vídeo tutorial «Automatización TI en Pandora FMS: Omnishell».

Omnishell se basa en la comunicación entre los distintos componentes de Pandora FMS a través de Tentacle, para coordinar de forma segura las ejecuciones y respuestas de los comandos que se desee programar.

Debe tener instalado en la Consola Pandora FMS la dependencia php-yaml y en los Agentes Software GNU/Linux la dependencia perl-YAML-Tiny.

Configuraciones adicionales de Tentacle Server

Solo para la versión NG 742 o versiones anteriores.

  • Tentacle Server necesita un cambio en la configuración para poder direccionar los ficheros con extensión .rcmd.
  • Estos archivos contienen definición de comandos, los cuales cada Agente Software descarga y evalúa.
  • La definición de filtros de archivo de Tentacle Server debe ser actualizada mediante:
  • Modificación del fichero /etc/tentacle/tentacle_server.conf>
# Filters (regexp:dir,regexp:dir...)
filters .*\.conf:conf;.*\.md5:md5;.*\.zip:collections;.*\.lock:trans;.*\.rcmd:commands
  • Copia del archivo tentacle_server.conf.new, el cual se distribuye al instalar el Pandora FMS Server.
  • Los archivos .rcmd son publicados en un nuevo directorio:
/var/spool/pandora/data_in/commands
  • Esta carpeta debe tener permisos para los usuarios que mueven el servidor de Pandora FMS y el Apache que mueve la consola:
chown pandora:apache -R /var/spool/pandora/data_in/commands
chmod g+s /var/spool/pandora/data_in/commands
  • Nota: Se utiliza un hash basándose en ciertos parámetros de la definición del comando.

Funcionamiento

Una tarea de Omnishell está definida por tres elementos:

Precondición

Mediante uno o varios comandos con cada ejecución secuencial que debe ser satisfactoria para todos ellos (resultado errorlevel 0 ).

Comandos

A ejecutar en el Agente Software destino, en una lista secuencial.

Postcondición

Mediante uno o varios comandos con cada ejecución secuencial que debe ser satisfactoria para todos ellos (resultado ''errorlevel 0'' ).

Si cualquiera de los comandos definidos en Precondición, Comandos o Postcondición entra en modo interactivo, bloqueando el flujo de ejecución, la tarea se interrumpirá. El propio Agente Software destruirá el proceso después del timeout configurado para la tarea.

Ejemplo en GNU Linux

Configurar el autoinicio del servicio HTTPD en sistemas CentOS 7 de forma masiva.

  • ¿Cuál es la precondición?: Indagar si el servicio figura como instalado, en caso contrario instalarlo.
[ `rpm -qa | grep -i httpd | wc -l` = 0 ] && yum install -y httpd

Esta línea, por medio del comando rpm, lista el software instalado y cuenta las apariciones de la palabra clave httpd. Si es cero lo instalará.

  • ¿Cuál es la tarea principal?: Iniciar y configurar el autoinicio del servicio HTTPD.
 systemctl restart httpd
 systemctl enable httpd.service

La primera línea iniciará el servicio en la máquina remota. La siguiente configurará el sistema para que arranque en cada reinicio del servidor remoto..

  • ¿Cómo validar la tarea principal? : Buscar mediante netstat las conexiones de red que sean httpd y que estén en la escucha en algún puerto. Si hay una o más, la condición devuelve verdadero.
[ `netstat -lptn | grep httpd | grep LISTEN | wc -l` -gt 0 ]

Una vez haya comprobado el código a ser ejecutado por los Agentes Software, proceda a crear el comando en Omnishell:

Tras la creación del comando se deben asignar los agentes necesarios.

El progreso de la ejecución del comando en los agentes seleccionados es similar a la siguiente imagen:

El tiempo estimado pendiente para la ejecución del comando es similar a la siguiente imagen: :

A aplicar de manera masiva la ejecución del comando, la vista será como la que sigue:

Haga clic en una caja para sacar un formulario modal con información extra:

Puede obtener más información en el vídeo tutorial «Novedades release 741 Pandora FMS».

Ejemplo en MS Windows

Para este entorno Omnishell aún se encuentra en periodo de comprobación por lo que algunas de sus características están sujetas a cambios o no están disponibles. Esto solamente es de manera temporal y ofrecemos disculpas por ello.

En lo que respecta al proceso de configuración en la Consola de Pandora FMS, usted debe repetir exactamente los mismos pasos realizados con el ejemplo anterior en GNU/Linux y solo cambiará el código a ejecutar.

Por la sencillez de este ejemplo, se utiliza solo la fase de precondición y tarea principal, respectivamente:

powershell.exe -command "Start-Sleep -Seconds 1"
powershell.exe -command "$mode = Get-Executionpolicy ; if ( $mode -like "restricted" ) {Write-Error -Message "0"}"

PowerShell es un nuevo shell de Windows que se ha diseñado expresamente para los administradores de sistemas. Este incluye un símbolo del sistema interactivo y un entorno de scripting que se pueden utilizar de forma independiente o conjunta. Viene instalado con dicho sistema operativo, aunque usted puede instalar PowerShell Core desde su repositorio en GitHub para obtener la última versión actualizada. Usted puede obtener información interesante acerca de PowerShell en el blog de Pandora FMS.

En la precondición se comprueba que PowerShell se encuentra instalado y puede ser utilizado, de lo contrario devolverá error y no podrá ser ejecutado el siguiente paso.

En la tarea principal se indaga acerca de las posibilidad de ejecutar scripts escritos en PowerShell. Si se ejecuta sin error se podrá agregar código en la fase de comprobación para utilizar uno y realizar tareas más largas y complejas. Para más información consulte la documentación acerca de cómo ejecutar scripts en un módulo o cómo utilizar una plantilla para crear un módulo que utilice PowerShell.

Durante la instalación del Agente Software deberá marcar la opción Enable remote config. Si ya tiene dicho agente instalado deberá modificar el fichero %PROGRAMFILES%\pandora_agent\pandora_agent.conf con derechos de Administrador y agregar (o modificar) la siguiente línea: remote_config 1. En el grupo de programa Pandora FMS del menú de inicio se ofrece un acceso directo al guión %PROGRAMFILES%\pandora_agent\scripts\edit_config_file.bat para mayor rapidez y facilidad.

Observaciones

  • El agente ejecutará cada orden de cada bloque.
  • Si la evaluación de cada orden no es 0 (error_level !=0), se dejará de evaluar y se dará como fallido el comando.
  • El agente tomará los valores de los parámetros retry y timeout para el número de reintentos y tiempo máximo de ejecución, respectivamente.
  • Independientemente del resultado, el agente se guardará una marca de ejecución. Cada comando se ejecuta solo una vez.
  • Si actualiza el nombre del comando provocará que el agente lo ejecute de nuevo, dado que la referencia cambiará.
  • Puede asignar tantos comandos como desee al mismo agente.
  • La ejecución de comandos en el agente puede afectar a la monitorización; no utilice un timeout mayor que el intervalo del agente.

Volver al Índice de Documentación Pandora FMS