Detalles técnicos sobre el funcionamiento del agente macOS
Requisitos previos e instalación del agente
Requisitos previos
Los requisitos previos necesarios para la instalación del agente varían según la versión del SO a supervisar y, por extensión, de la versión de Python del sistema instalada.
Para las versiones de macOS inferiores a 12.3, se debe priorizar la instalación del agente Python2 (versión instalada por defecto en el sistema), lo que no genera requisitos adicionales.
Esto es diferente para el agente Python3, que requiere la verificación de los tres elementos siguientes antes de su instalación:
- La máquina debe disponer de una instalación de Xcode Command Line Tools, versión ligera del paquete Xcode, que permite ampliar parcialmente las funcionalidades relacionadas con la ejecución de módulos Python. La ausencia de este requisito generará el mensaje de error
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun, que puede resolverse ejecutandoxcode-select --install - Una máquina con procesador Mac M1 o M2 debe disponer del programa Rosetta 2, para ser compatible con nuestro agente macOS. Esta instalación se realiza ejecutando el comando
softwareupdate --install-rosettay luego aceptando un acuerdo de licencia. Con fines de automatización, el comandosoftwareupdate --install-rosetta --agree-to-licensepermite omitir la aceptación de este acuerdo - En cuanto a la gestión de dependencias relacionadas con módulos Python3, esta es automática desde la versión 4.12 del agente. La aparición de un error
ModuleNotFoundError: No module named 'requests'significa que no se completó correctamente y requiere en ese caso seguir este procedimiento
Instalación
El agente macOS se presenta como un paquete macOS clásico (.pkg).
La instalación del agente macOS en los activos se realiza mediante la ejecución de un comando de instalación a recuperar desde la interfaz Cyberwatch, a través del formulario de creación de un agente macOS. Este comando de instalación incluye los parámetros seleccionados en Cyberwatch para su instalación como por ejemplo: los grupos, la URL de la instancia Cyberwatch…
La instalación del agente en un sistema macOS pasa por las siguientes etapas:
- configuración del repositorio del activo objetivo para que conozca el paquete
- instalación del paquete mediante el gestor del activo, recuperado desde el repositorio alojado en el servidor Cyberwatch
- registro del agente en el servidor Cyberwatch mediante el método
registerdel agente - eliminación del paquete de instalación
De forma individual, la instalación del agente macOS puede realizarse copiando y pegando el comando de instalación propuesto por Cyberwatch directamente en el activo a supervisar. Para cualquier industrialización del despliegue, es posible automatizar la instalación del agente en los activos macOS utilizando una solución que permita ejecutar comandos sobre un conjunto de activos (p. ej. Ansible).
Desinstalación del agente
La desinstalación completa de un agente macOS se realiza ejecutando los siguientes comandos:
sudo launchctl unload -w /Library/LaunchDaemons/fr.cyberwatch.agent.pkg.plist
sudo rm -rf /Library/LaunchDaemons/fr.cyberwatch.agent.pkg.plist
sudo rm -rf /Library/Cyberwatch
sudo rm -rf /var/log/cyberwatch-agent
sudo rm -rf /usr/local/bin/cyberwatch-agent
sudo rm -rf /etc/cyberwatch-agent
sudo pkgutil --forget fr.cyberwatch.agent.pkg
Funcionamiento del agente
En sistemas macOS, el agente funciona mediante un servicio que ejecuta cada cinco minutos el paquete cyberwatch-agent. Estos dos archivos están presentes respectivamente en los
directorios /Library/Cyberwatch/cyberwatch-agent/launchd/fr.cyberwatch.agent.pkg.plist, referenciado simbólicamente en /Library/LaunchDaemons/fr.cyberwatch.agent.pkg.plist y /Library/Cyberwatch/cyberwatch-agent/cyberwatch-agent.py, referenciado simbólicamente en /usr/local/bin/cyberwatch-agent.
A continuación se muestran los archivos relativos al funcionamiento del agente Cyberwatch creados en el sistema durante la instalación:
/Library/Cyberwatch/cyberwatch-agent/launchd/fr.cyberwatch.agent.pkg.plistdaemon lanzado cada 5 minutos/Library/Cyberwatch/cyberwatch-agent/cyberwatch-agent.pyarchivo python de ejecución del agente Cyberwatch/etc/cyberwatch-agent/agent.confarchivo de configuración del agente- el directorio
/var/log/cyberwatch-agent/que contiene los archivosagent.log.*
La ejecución del agente simplemente provoca una comunicación con la API de la instancia Cyberwatch que responderá con las posibles tareas a realizar en el activo en cuestión.
Actualizaciones del agente
Los cambios del agente se enumeran en el historial de versiones del agente Cyberwatch.
Cuando Cyberwatch publica una nueva versión del agente macOS, esta se pone a disposición en el repositorio de la instancia on premise y por tanto está disponible para los activos en los que se configuró el repositorio durante la instalación. Basta con ejecutar de nuevo los comandos de instalación disponibles desde el formulario de creación de un agente macOS.
Gestionar manualmente la instalación de la dependencia requests
A pesar de la gestión automática de dependencias durante el proceso de instalación, es posible que pip3 no logre descargar el módulo requests desde PyPI. Esto puede deberse a un bloqueo de flujo, a un fallo en la verificación del certificado de PyPI… Y se traduce en la aparición del código de error ModuleNotFoundError: No module named 'requests' durante la instalación.
En este caso, basta con realizar manualmente la instalación de este módulo como usuario root (para que el módulo se cargue para el usuario que ejecuta el agente), y luego relanzar el comando de registro:
sudo su -
pip3 install requests
sudo cyberwatch-agent register --access-key-id '' --secret-access-key '' --api-url '' --allow_selfsigned true --groups ','