Depende de lo que necesites exactamente y de lo que estés buscando. Pero en general existen múltiples soluciones para la "gestión de la configuración como:
- títere
- cocinero
- cfengine
- ansible
- sal
etc. Personalmente, recomendaría títeres, ya que tiene una gran comunidad y muchas recetas proporcionadas por terceros. Esto le permite configurar y administrar sistemas automáticamente. Si combina esto con repositorios propios y actualizaciones automáticas a través de, p. unattended-upgrades
puede actualizar automáticamente el sistema.
Otra solución es simplemente proporcionar sus propios paquetes como company-base
etc. que automáticamente depende del software necesario y puede configurar su sistema automáticamente.
También debe buscar implementaciones automáticas (básicas y virtualizadas). Si combina esto con la gestión de configuración o su propio repositorio, puede automatizar y reinstalar fácilmente sus sistemas. Si desea comenzar con la instalación automatizada, eche un vistazo a theforman, que es compatible con libvirt, así como con instalaciones básicas y tiene soporte de marionetas integrado. Si desea hacerlo usted mismo, puede consultar kickstart (redhat et. al.) o "preconfiguración" para configurar automáticamente su sistema. Para Debian, también puede usar algo como debootstrap o un envoltorio llamado grml-debootstrap que admita imágenes virtualizadas.
Para ayudar a proporcionar las imágenes de VirtualBox para su desarrollador, eche un vistazo a vagrant, que le permite automatizar la creación de sistemas virtualizados con scripts de chef, marionetas y shell compatibles con VirtualBox para personalizar su entorno virtual.
Si desea utilizar la solución de su proveedor actual, debe preguntarle cómo administra sus sistemas, pero probablemente será algún tipo de administración de configuración. Es posible que pueda ejecutar su agente en sus sistemas si puede acceder al servidor de configuración.
Para las palabras clave de Google, consulte devops
, configuration management
, it automation
y server orchestration
.
En resumen, automatice tanto como sea posible y ni siquiera piense en hacer las cosas manualmente.
Ulrich ya dio la respuesta con respecto a la implementación de software y la configuración automática del servidor.
Los principios detrás de esto son
- Defina cómo deben verse sus servidores:esto incluye el software común que se instala de forma predeterminada, el esquema de partición y el diseño del sistema de archivos
- Los servidores de producción, puesta en escena, prueba y desarrollo no deben diferir con respecto a estos estándares básicos (de lo contrario, tendrá problemas más adelante, como sucedió)
- Utilice una gestión de cambios adecuada para documentar TODOS los cambios realizados (incluidos los pequeños cambios de una línea en cualquier configuración)
- Siempre cambia primero en la prueba, luego en el desarrollo, luego en la puesta en escena y por último en la producción
Solicitó una herramienta útil para administrar grandes cantidades de servidores:mi favorito personal es cluster-ssh (cssh
). Escriba una vez y realice cambios en muchos servidores simultáneamente.
Si descubre un problema y tiene una solución que soluciona el problema:
- Aplique la corrección a Test/Dev/Staging/Prod (ver arriba) si realmente funciona
- Aplique la corrección a sus plantillas virtuales para que futuros clones de VM no tengan ese error
- Aplique la solución a su proceso de instalación física (kickstart/autoyast/lo que sea)
- Aplicar la solución a TODOS los servidores
Si se enfrenta a una gran cantidad de servidores para arreglar este es un proceso que debe estar bien documentado y, al final, un equipo diferente debe verificar si la solución se ha aplicado por completo.
Empleamos Mantis (código abierto, PHP) para ese propósito.
Administro alrededor de 30 productos y unos pocos cientos de servidores en varios países. Soy el administrador de configuración del software, por lo que no tengo acceso raíz (por diseño), no toco las bases de datos o sus servidores (nuevamente, por diseño) y tengo que saltar muchos obstáculos debido a la seguridad corporativa. Pero administro las configuraciones en prueba, preparación y producción, incluidos los enlaces y cambios de la base de datos. Tengo varios scripts que salen a los servidores usando combinaciones de ssh
, python
y scripts de shell.
Las cosas principales en las que pensar son:
- ¿Qué tipo de interacciones tendrá con sus servidores? ¿Solo cargas de archivos? ¿Ejecutar programas de línea de comandos? ¿Ejecutando clientes X remotos?
- ¿Qué nivel de seguridad se necesita para acceder a estos servidores? ¿Cortafuegos, redes seguras, vpn? es
ssh
suficiente y desde una ubicación central segura? - ¿Cuánto se puede automatizar en cada servidor? ¿Puedes instalar un programa en cada servidor y ejecutarlo, o necesitas transmitir el programa a través de algo como
ssh
? para ejecutarlo de forma remota? ¿Puedes escribirlo conexpect
? o simplemente una invocación de línea de comandos?
VirtualBox ofrece muchas herramientas de línea de comandos que puede administrar con solo ssh
o sistemas como puppet
como menciona Ulrich.