Administración masiva/remota de Linux

Administración masiva/remota de Linux

Además de nuestra infraestructura de TI interna, tenemos alrededor de 500 máquinas Linux que alojan nuestros servicios para el mundo en línea. Están agrupados en varios grupos como Base de datos An, Producto An, NFS, Backoffice, etc. Además, son administrados por un proveedor externo, según nuestras especificaciones y requisitos.

Sin embargo, nos enfrentamos a muchos problemas durante el desarrollo, implementación e implementación de software (web), especialmente porque los entornos de desarrollo y preparación no tienen casi nada en común con los sistemas en vivo (evito los detalles desagradables...) .

Por lo tanto, intenté crear máquinas virtuales, copié los diversos sistemas en vivo lo más exactamente posible y los preparé para conectarse, por ejemplo, a las bases de datos de desarrollo en lugar de a las "reales" de forma transparente para los desarrolladores (no lo son root). Esto funciona bastante bien, pero...

Me preguntaba cómo se podrían administrar esos sistemas de forma remota yal por mayor? ¿Existe alguna familia de software que no conozco? ¿O, al menos, algunas técnicas o principios con los que uno debería estar familiarizado?

Proporcionaríamos a cada desarrollador un montón de imágenes para ejecutar localmente (VirtualBox). El departamento de control de calidad. obtendría clústeres virtuales (XEN o Hyper-V). Si necesito proporcionar un módulo de servidor adicional, redirigir una nueva conexión de base de datos o simplemente quiero actualizar todo lo proporcionado por el administrador de paquetes... ¿cómo podría hacerlo sin tener que iniciar sesión en cada sistema y/o ¿Pedir a mis colegas que descarguen y ejecuten algún script de dispositivo?

Creo que hay muchas soluciones. Bueno, de alguna manera soy demasiado estúpido para ingresar las palabras clave correctas en los motores de búsqueda... ¿O no es esta cuestión tan trivial como parece?

Para el registro:

  • Casi todos los sistemas ejecutan Debian GNU/Linux 6.x "squeeze"
  • Ningún desarrollador está obligado a utilizar un sistema operativo concreto en su estación de trabajo.
  • El presupuesto es limitado, por supuesto, pero no demasiado pequeño para comprar software propietario.
  • Se prefiere una solución que involucre a nuestro proveedor antes mencionado.

Respuesta1

Depende de lo que necesites exactamente y de lo que estés buscando. Pero en general existen múltiples soluciones para "gestión de configuracióncomo:

  1. marioneta
  2. cocinero
  3. cfmotor
  4. ansible
  5. sal

etc. Personalmente recomendaría Puppet ya que tiene una gran comunidad y muchas recetas externas. Esto le permite configurar y administrar sistemas automáticamente. Si combina esto con repositorios propios y actualizaciones automáticas a través de, por ejemplo,unattended-upgradespuede actualizar automáticamente el sistema.

Otra solución es simplemente proporcionar sus propios paquetes, como company-baseetc., que dependen automáticamente del software necesario y pueden configurar su sistema automáticamente.

También debería considerar implementaciones automatizadas (barebone y virtualizadas). Si combina esto con la gestión de configuración o su propio repositorio, podrá automatizar y reinstalar fácilmente sus sistemas. Si desea comenzar con la instalación automatizada, eche un vistazo aelformanque soporta libvirt así como instalaciones básicas y tiene soporte de títeres integrado. Si quieres hacerlo tú mismo, puedes investigarpuntapié inicial (redhat et. al.) o "preconfiguración" para configurar automáticamente su sistema. Para Debian también puedes usar algo comocorrea de arranqueo un envoltorio llamadogrml-debootstrapSoporta imágenes virtualizadas.

Para ayudar a proporcionar las imágenes de VirtualBox a su desarrollador, consultevagabundole permite automatizar la creación de sistemas virtualizados con VirtualBox que admite scripts de chef, Puppet y Shell para personalizar su entorno virtual.

Si desea utilizar la solución de su proveedor actual, debe preguntarles cómo administran sus sistemas, pero probablemente será algún tipo de administración de configuración. Es posible ejecutar su agente en sus sistemas si puede acceder al servidor de configuración.

Para las palabras clave de Google , consulte devops, y .configuration managementit automationserver orchestration

En resumen, automatice tanto como sea posible y ni siquiera piense en hacer cosas manualmente.

Respuesta2

Ulrich ya dio la respuesta sobre la implementación del software y la configuración automatizada del servidor.

Los principios detrás de esto son

  • Defina cómo deberían 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, ensayo, prueba y desarrollo no deberían diferir con respecto a estos estándares básicos (de lo contrario, tendrá problemas más adelante, como lo hizo)
  • Utilice una gestión de cambios adecuada para documentar TODOS los cambios que realizó (incluidos 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 lo elimina:

  1. Aplique la solución a Test/Dev/Staging/Prod (ver arriba) si realmente funciona
  2. Aplique la solución a sus plantillas virtuales para que futuros clones de VM no tengan ese error
  3. Aplique la solución a su proceso de instalación física (kickstart/autoyast/lo que sea)
  4. Aplicar la solución a TODOS los servidores

Si se enfrenta a una gran cantidad de servidores para solucionarlo, este es un proceso que debe estar bien documentado y, al final, un equipo diferente debe comprobar si la solución se ha aplicado por completo.

Empleamos Mantis (código abierto, PHP) para ese propósito.

Respuesta3

Administro unos 30 productos y unos 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 ni sus servidores (nuevamente, por diseño) y tengo que saltar muchos obstáculos debido a la seguridad corporativa. Pero sí administro las configuraciones en prueba, preparación y producción, incluidos los enlaces y cambios de la base de datos. Tengo varios scripts que se envían a los servidores mediante combinaciones de sshy pythonscripts de shell.

Las principales cosas en las que pensar son:

  1. ¿Qué tipo de interacciones vas a tener con tus servidores? ¿Solo carga de archivos? ¿Ejecutando programas de línea de comandos? ¿Ejecutando clientes X remotos?
  2. ¿Qué nivel de seguridad se necesita para acceder a estos servidores? ¿Firewalls, redes seguras, vpn? ¿Es sshsuficiente y desde una ubicación central segura?
  3. ¿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 sshejecutarlo de forma remota? ¿Puedes escribirlo con expectuna invocación de línea de comandos o simplemente con ella?

VirtualBox ofrece muchas herramientas de línea de comandos que puede administrar a través de sshsistemas como puppetlos que menciona Ulrich.

Respuesta4

En los últimos años ha aparecido un nuevo conjunto de sistemas minimalistas que se centran en la capacidad de crear una configuración mediante scripts. Debido a que son marcos para escribir guiones, tienden a sobresalir en tareas que requieren secuenciación.

pyinfra

Pyinfra automatiza la infraestructura súper rápido a escala masiva. Se puede utilizar para la ejecución de comandos ad hoc, implementación de servicios, gestión de configuración y más.

http://pyinfra.com/

Judo

Gestión sencilla de orquestación y configuración

http://github.com/rollcat/judo

conjunto(1) : pln(5)

Configurar sistemas usando cualquier lenguaje de scripting

http://scriptedconfiguration.org/

información relacionada