¿Cómo aplica prácticas de desarrollo como control de versiones, pruebas e integración / implementación continua a la administración del sistema?

18

Imagine que va a administrar una cantidad de servidores con diferentes servicios que utilizan varias personas. Ahora digamos que desea reconfigurar o reemplazar algún software en uno de esos servidores. Obviamente no desea trabajar en servidores que están en producción.

Si esto fuera un cambio de código, como desarrollador, haría el cambio en mi máquina de desarrollo local, lo probaría localmente y confirmaría el cambio en un sistema de control de versiones. Los cambios podrían implementarse en un entorno de ensayo, probarse más y finalmente implementarse en un entorno de producción. También sería fácil para mí retroceder, si fuera necesario.

En general, o específicamente, ¿cómo se logra esto en la administración del sistema?

(Lo primero que se me viene a la mente es usar máquinas virtuales y poner imágenes de máquinas virtuales en el control de versiones, pero estoy seguro de que hay mucha literatura y soluciones inteligentes que no conozco actualmente).

arex1337
fuente
¿Está preguntando sobre herramientas técnicas o sobre marcos para administrar este tipo de cosas? Porque sería difícil hablar sobre la última opción sin mencionar cosas como el cambio y la administración de versiones de la disciplina ITIL.
Rob Moir
@ DJPon3 Me gustaría saber sobre el enfoque general (cómo pensarlo) y las herramientas para hacerlo. Siéntase libre de usar mi último párrafo como punto de partida.
arex1337

Respuestas:

15

La respuesta corta es "Gestión de implementación del sistema operativo", "Gestión de la configuración" y "Paquete de software". La respuesta larga sigue.

Me gustaría agregar a la respuesta de Daniel Pittman un desglose de lo que forma un "sistema" en la administración de sistemas.

Un sistema o un entorno comprenderá:

  • Servidores
  • Sistema operativo
  • Configuración
  • Paquetes de proveedores; y
  • Paquetes locales

Envolviendo estos serán procesos tales como:

  • Implementación o imagen del sistema operativo
  • Gestión de la configuración
  • Paquete de software de gestión
  • Auditoría / registro
  • Supervisión
  • Copias de seguridad

Y le gustaría que estos se combinen para ayudarlo a lograr objetivos no funcionales como:

  • Repetibilidad
  • Mantenibilidad
  • Mensurabilidad
  • Actuación
  • Rastreabilidad
  • Testabilidad
  • Posibilidad de cambiar

Esta es una descarga rápida de cerebro. Estoy seguro de que se podrían agregar más a todas las listas.

Su pregunta toca varios de estos sin usar las palabras específicas. Por ejemplo, desea poder implementar fácilmente y revertir, es decir, desea mantenerlo; desea hacerlo en un entorno de prueba y probar hasta que pase, es decir, repetibilidad, comprobabilidad y mensurabilidad; está pensando en poner imágenes vm en el control de versiones porque desea repetir el sistema operativo y las implementaciones de configuración.

Hay muchas herramientas para ayudarlo con esto, algunas de ellas mencionadas por Daniel. Algunos otros son:

  • Kickstarts (basado en RedHat), Preseed (basado en Debian), WDS (MS Windows) para implementar entornos de SO conocidos
  • Spacewalk / Satellite (basado en RedHat), Políticas de grupo (MS Windows) para la configuración y administración de paquetes
  • Sistemas de empaquetado YUM y APT para generar, implementar, actualizar y eliminar paquetes (conjuntos de archivos binarios, datos y configuración que comprenden una pieza de software)
  • Nagios, OpenNMS y SCOM para monitoreo
  • Amanda, Bacula y Windows Backup Server para copias de seguridad
  • Munin, PCP e Hyperic para monitoreo de desempeño
  • CVS, SVN, GIT o Bazaar para control de versiones
  • Hudson y Jenkins para la gestión de compilación
  • Selenio y robot para pruebas
  • Bugzilla, Request Tracker y Jira para grabación, comunicación y seguimiento

Nuevamente, esta no es una lista completa, sino algo que tengo en mente para guiarme y espero que también te ayude.

Nearora
fuente
¿Qué es marvin? No puedo encontrar una referencia o es un error tipográfico?
thelsdj
s / Marvin / Hudson / - gracias por ver eso @thelsdj :-)
casi
16

Descargo de responsabilidad: soy uno de los desarrolladores de Puppet.

La forma obvia es simplemente aplicar los conceptos: definir un ciclo de desarrollo / prueba / producción e impulsar los cambios a través de ellos. Utilice el control de versiones para rastrear sistemas.

En poco tiempo, comenzar por ese camino conduce a descubrir que realmente desea herramientas que automaticen esas cosas, esencialmente, que desea automatizar la administración de sistemas, para que no use esas técnicas en máquinas, las use en el sistema que gestiona las máquinas.

Herramientas como Chef , Puppet , Salt y CFEngine son herramientas populares para abordar esa segunda necesidad. Trabajan en la dirección general de convertir la administración de sistemas en una solución central que puede controlar y probar.

El movimiento DevOps es otra fuente de buena información sobre cómo hacer esto. Si bien el precepto es una mejor cooperación entre los desarrolladores y el personal de operaciones, también tiende en la misma dirección.

Daniel Pittman
fuente
15
Ahora sabemos que acosan a preguntas acerca de nuestros Títeres ...
ewwhite
1

En un mundo de Windows, estos problemas relacionados con la administración del ciclo de vida de las aplicaciones se están abordando con System Center 2012.

En System Center Virtual Machine Manager (SCVMM), los servicios se definen usando 'Plantillas de servicio' (por ejemplo, un servicio clásico de tres niveles) y los entornos de ejecución se definen como 'Nubes' (por ejemplo, desarrollo, puesta en escena, producción). Las plantillas de servicio se pueden versionar y desplegar (de forma automatizada) a diferentes nubes. Debajo de las cubiertas, SCVMM hace el trabajo para aprovisionar, implementar y configurar el hardware y el software virtualizados (VM, etc.) y el software (SO, componentes de la aplicación, etc.).

System Center Service Manager es la pieza que une esto desde un punto de vista del proceso. Por ejemplo, la gestión de problemas y el control de cambios.

Richard B
fuente