Estoy buscando un paquete de código abierto para configurar una API HTTP para crear, modificar y desmantelar otros tipos de servidores en un servidor Linux. Me gustaría poder administrar:
Por ejemplo, me gustaría poder decir:
/var/www/mydocroot
He sugerido una API basada en HTTP ya que esta parece ser la forma más sensata de comunicarse con este sistema de forma remota. Me imagino que también sería RESTful. Sin embargo, este no es un requisito estricto: si hay otra forma de comunicarse basada en estándares, entonces aún podría ser adecuada.
En caso de que sea útil guiar las respuestas, mi caso de uso es un conjunto de pruebas de integración que prueban una aplicación que realiza implementaciones de software. Las pruebas individuales deberán crear servidores web y varios sistemas de transporte de archivos para verificar el funcionamiento de la aplicación. Actualmente solo pruebo en un entorno Docker y enciendo y apago los servidores SSH/FTP con comandos de shell (esto significa que el conjunto actual de pruebas no se puede paralelizar, ya que todos usan una sola instancia de cada servicio).
Preveo que esta herramienta administrará servidores en el mismo servidor en el que está instalada y que debería ejecutarse como raíz. Sin embargo, podría administrar otro servidor en su lugar.
Si hay una API HTTP para algo como cPanel o WebMin, eso podría funcionar. Encontré este servicio , pero no es de código abierto, y es solo para un servicio FTP alojado en lugar de un paquete que uno puede autoinstalar.
Estaba pensando en escribir este servicio yo mismo y abrirlo, pero tiene sentido ver si existe primero. Mis búsquedas en la web indican "no" en este momento, pero vale la pena asegurarse.
Parece que lo que realmente quiere aquí es una forma de simplificar el manejo de la gestión de la configuración y el aprovisionamiento del sistema. Mi recomendación personal sería usar Ansible para esto.
Ansible es una herramienta de automatización de implementación y administración de configuración escalable escrita en Python. Utiliza un sistema central para la administración en el que debe instalarse, pero no requiere casi nada en ninguno de los sistemas que se administran. Los libros de jugadas de Ansible (su equivalente a los scripts) usan una sintaxis realmente simple y fácil de aprender basada en YAML y Jinja2 para especificar qué módulos (esencialmente comandos) ejecutar en qué sistemas.
Se proporciona una gran variedad de módulos diferentes con Ansible (consulte aquí la lista completa), incluidos los que se utilizan para el manejo de contenedores Docker, la gestión de paquetes instalados en un host, el manejo de qué servicios están habilitados o no, la implementación de software, la modificación de la configuración y muchos más. otras cosas.
Algo notable es el hecho de que Ansible admite lo que ellos llaman 'inventario dinámico', lo que significa que puede girar trivialmente máquinas virtuales o contenedores efímeros y usarlos sin tener que preocuparse por nombrarse a sí mismo.
También puede invocar módulos individuales a mano, lo que permite cambios de configuración de forma libre como está describiendo.
Lo único que realmente le falta dadas sus limitaciones es una API HTTP (se ejecuta desde la línea de comandos y no hay un servicio persistente asociado ni en el sistema local ni en los sistemas administrados).
la mitad
la mitad