Automatización IT Omnishell
Omnishell es una funcionalidad Enterprise de Pandora FMS que se utiliza para la orquestación y 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.
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.
Se debe tener instalado en la Consola Pandora FMS la dependencia php-yaml y en los Agentes Software GNU/Linux la dependencia perl-YAML-Tiny.
Si utiliza la versión 742 o anterior, deberá realizar configuraciones adicionales en el Tentacle server.
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 RHEL 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 línea 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.
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"}"
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 con derechos de Administrador:
%PROGRAMFILES%\pandora_agent\pandora_agent.conf
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 script para mayor rapidez y facilidad:
%PROGRAMFILES%\pandora_agent\scripts\edit_config_file.bat
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
ytimeout
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.
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 administran el servidor de Pandora FMS y el Apache que ejecuta 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.
- Debe asegurar la instalación del protocolo Tentacle, en GNU/Linux® o en MS Windows®, según sea su caso.