¿Cómo administran sus cajas EC2 Linux?

8

Tengo algunas imágenes EC2 Linux que realizan trabajos de procesamiento nocturno para uno de mis proyectos. De vez en cuando, tendré que entrar, hacer algunos cambios en el código, configurar algunas cosas y volver a agrupar la imagen.

Mi conjunto de herramientas para estas operaciones es dolorosamente escaso (SSH en la caja, edito archivos en VIM, archivos remotos WGET que necesito), y sospecho que hay una manera mucho mejor de hacerlo. Tengo curiosidad por escuchar lo que otras personas en mi posición están haciendo.

  • ¿Está utilizando algún tipo de sistema de ventanas y un escritorio remoto equivalente para acceder al cuadro, o es todo línea de comando? La administración de las cajas de Windows EC2 es trivial, ya que puede simplemente instalar el escritorio remoto y transferir archivos a través de la red. ¿Hay un equivalente a esto en el mundo de Linux?

  • ¿Estás haciendo tus cambios de configuración / ajustes de script directamente en la máquina? ¿O tiene algo configurado en su casilla local para editar estos archivos de forma remota? ¿O simplemente los edita de forma remota y luego los transfiere en cada guardado?

  • ¿Cómo mueve los archivos de un lado a otro entre EC2 y su entorno local? FTP? ¿Algún tipo de unidad asignada a través de VPN?

Realmente necesito tener algunas mejores prácticas para administrar estos cuadros. ¡Cualquier sugerencia para eliminar parte del dolor sería bienvenida!

EDITAR: Evidentemente, no estaba claro anteriormente, ya que las dos primeras respuestas giraron en torno a la gestión y configuración de instancias EC2. Solo quiero saber cómo escritorio remoto en un servidor Linux en ejecución para que mover archivos y editarlos sea menos doloroso.

Jason Kester
fuente
Es posible que haya recibido respuestas sobre la administración y configuración de instancias EC2 porque su título es "¿Cómo administra sus cajas EC2 Linux?"
Bill Weiss el

Respuestas:

13

Ya no hago mucha administración manual del sistema. Veo mi infraestructura como una entidad programable y la trato como tal, configurando sistemas con herramientas que automatizan la gestión de la configuración, el mantenimiento del nodo EC2, etc. Herramientas en mi caja de herramientas:

  • Ruby (mi lenguaje de scripting / herramienta favorito)
  • Git (control de versiones)
  • Opscode's Chef (escrito en Ruby) (1)
  • Capistrano (mantenimiento masivo ad hoc)
  • Herramientas de API EC2 de Amazon, por ejemplo, y mantenimiento de imágenes.
  • Gema AWS de Rightscale (enlaces Ruby para EC2)

(1) - Divulgación, trabajo para Opscode. Otras herramientas llenan este espacio como la marioneta de Reductive Lab.

Empaquete un AMI cuando tengo un nodo construido de la manera que necesito para una función específica. Por ejemplo, si estoy compilando un servidor de aplicaciones Rails, tendré todos los paquetes de requisitos previos instalados para ahorrar tiempo en la compilación.

Cuando todo lo demás falla, inicio sesión en los sistemas con SSH. Hice la administración manual del sistema durante muchos años, este es un sombrero viejo.

¿Está utilizando algún tipo de sistema de ventanas y un escritorio remoto equivalente para acceder al cuadro, o es todo línea de comando?

No instalo ninguna GUI en los servidores a menos que un paquete tenga una dependencia y uno se instale automáticamente.

¿Hay un equivalente a esto en el mundo de Linux? (transferencia de archivos)

Normalmente hago dos tipos de transferencia de archivos / mantenimiento de archivos.

  • Instalación del paquete
  • Archivos de configuración

Para los paquetes nativos de la plataforma, utilizo la herramienta de administración de paquetes estándar como APT o YUM. Para las instalaciones de origen (something.tar.gz) generalmente descargo a través de wget.

Los archivos de configuración suelen ser plantillas ERB administradas por Chef.

Yo uso SSH y SCP / SFTP para transferir archivos manualmente.

¿Estás haciendo tus cambios de configuración / ajustes de script directamente en la máquina? ¿O tiene algo configurado en su casilla local para editar estos archivos de forma remota? ¿O simplemente los edita de forma remota y luego los transfiere en cada guardado?

Mantengo todo lo relacionado con la gestión de sistemas en un repositorio de control de software. Aquí está mi flujo de trabajo típico al actualizar la configuración en uno o más sistemas. Comienzo desde mi estación de trabajo local.

  • Extraiga del repositorio maestro de Git para los cambios de otros.
  • Editar archivos localmente (como actualizar un archivo de configuración).
  • Cometer el cambio, empujar para dominar.
  • En el servidor Chef (conectado a través de SSH), obtenga el último cambio que acabo de confirmar.
  • Implemente la configuración en el lugar apropiado en el servidor Chef (uso Rake para esto).
  • Los clientes chef se ejecutan en un intervalo, por lo que recogerán los cambios cada 30 minutos. Si necesito algo de inmediato, ejecuto chef-cliente manualmente.
  • ¡Verifica el cambio!

¿Cómo mueve los archivos de un lado a otro entre EC2 y su entorno local? FTP? ¿Algún tipo de unidad asignada a través de VPN?

Hay algunas ubicaciones donde se pueden almacenar los archivos que uso en los nodos EC2.

  • Chef servidor. Plantillas de configuración principalmente, algunos paquetes pequeños también.
  • GitHub. Almacenamos nuestro código (proyectos de código abierto) en GitHub. Los nodos EC2 pueden acceder a esto fácilmente (por ejemplo, para el pago de la última versión de algo).
  • Cubos de Amazon S3. Algunas cosas se almacenan en un cubo.

Hago mucho trabajo en EC2, principalmente probando entornos y cambios. Como resultado de mis herramientas y flujo de trabajo, paso más tiempo trabajando en cosas que realmente me interesan y menos en el manejo de archivos individuales y pensando en configuraciones específicas.

jtimberman
fuente
"Uso la herramienta de administración de paquetes estándar como APT o YUM" - apt-get / yum siempre elige la última. ¿Cómo se gestiona si tiene que instalar otra versión del paquete (hecho necesario por las necesidades particulares de su aplicación)? ¿O nunca te has enfrentado a esto?
talonx
6

Todo nuestro software se implementa a través de RPM. Cada tipo de instancia EC2 se describe mediante un archivo kickstart (que enumera los RPM que se instalarán ...). La configuración kickstart significa que se puede construir una máquina en funcionamiento de cada tipo de instancia desde cero en aproximadamente 10 minutos.

Luego tenemos un programa que invoca a anaconda (el instalador de Red Hat) para tomar un archivo kickstart, instalar el sistema en un directorio, luego agrupar el directorio y llevarlo a S3 como una imagen de máquina de Amazon. Todo esto es un paso, así que solo escribo:

kickstart2ami webserver.ks

Dado que una máquina se puede reconstruir, cargar y ejecutar por completo en aproximadamente 40 minutos, es más fácil construir nuevas imágenes de máquina que ejecutar sysadmin en las instancias EC2 reales (desechables). Por lo tanto, no se realiza realmente sysadmin en instancias EC2.

tfh1985
fuente
¿Entonces realmente reconstruyes la caja entera desde cero cada vez que la lanzas? Ay. Incluso el pequeño trabajo que hace mi caja tiene una docena de dependencias aleatorias y un montón de código personalizado en 3 idiomas. Tomó un mes de ajustes para configurarlo correctamente, por lo que no podía imaginar el script complejo que reproduciría todo eso de una sola vez. ¿Cómo construiste y probaste ese script tuyo?
Jason Kester
todo el código está empaquetado en paquetes RPM ( en.wikipedia.org/wiki/RPM_Package_Manager ), por lo que cualquier complejidad de la instalación de varias piezas de código se abstrae dentro de los paquetes. La mayor parte del esfuerzo está en empaquetar el código. En general, considero que todo lo que está instalado, no a través de la administración de paquetes, está organizado. El kickstart simplemente instala una lista de estos paquetes, por lo que su trabajo es bastante simple. Como no hay configuración / ajustes mágicos, ninguna máquina es especial o preciosa. "kickstart2ami" solo llama a anaconda, luego las herramientas de carga / registro ec2 en orden, con algo de pegamento.
tfh1985
1
¿Puedes compartir tu script kickstart2ami?
Noah Campbell
@JasonKester Cualquier cosa importante que "tomó un mes de ajustes para configurarla correctamente" seguramente vale la pena documentar los pasos para reproducirla. ¿Qué mejor manera de documentarlo que mediante un script?
Skyhawk
3

Me gusta NX para acceso remoto a la interfaz gráfica de usuario. Muy bien documentado también.


fuente
3

Utilizo nautilus para bastante administración de archivos y ssh para comandos. Se conecta directamente a su sistema como si estuviera físicamente en el centro de datos. Si lo está haciendo desde un cuadro de Windows, entonces este tipo de conectividad no funcionará ya que vfs en Windows es limitado.

Jason Mitchell
fuente
2

Creo que no necesita un escritorio remoto para estas tareas.

Como otros mencionaron, puede usar SFTP para transferir los archivos entre las cajas. Use el cliente WinSCP para conectarse a través de sftp, que también puede usar para editar los archivos en su máquina Windows (haciendo doble clic en ellos) como si estuviera en su máquina local. También puede usarlo para copiar / mover archivos de forma remota.

También puede considerar usar Midnight Commander (mc) en la consola ssh que puede acelerar las operaciones de archivos. Para instalar use el comando yum install mco apt-get install mc. Luego puede iniciarlo escribiendo mcen la terminal. También tiene un visor y editor incorporado que es más sencillo que vim.

Si realmente desea tener una GUI, que generalmente no tenemos en los servidores, debe instalar el entorno X y conectarse a él con VNC. En tales casos, nos conectamos al servidor VNC a través de un túnel ssh que le agrega más seguridad.

Attila Fulop
fuente
1

En respuesta a su pregunta sobre la configuración de un escritorio remoto con X, si está utilizando Debian, lea esto . No es exactamente el mejor documento para configurarlo. Te tiene instalando demasiados paquetes, pero tiene la idea correcta. Realmente solo necesita un controlador de video ficticio para X, y luego que VNC inicie un escritorio X.

supercheetah
fuente
0

Si está utilizando ubuntu: estamos considerando usar landscape para esto, es un producto comercial del equipo ubuntu (canónico) y se integrará con los comandos ec2.

hoberion
fuente
Gracias, pero parece ser una herramienta para administrar instancias EC2, en lugar de un escritorio remoto en una caja individual, que es lo que estoy buscando para hacer las herramientas.
Jason Kester
0

Podría intentar algo como capistrano, pero si eso no es suficiente para lo que busca, entonces parece que es candidato para algún tipo de gestión de configuración.
Puppet, reductivelabs.com/products/puppet/, se destaca realmente en este campo, pero puede ser un poco exagerado para usted a menos que tenga planes de hacerse más grande y valga la pena el trabajo duro por adelantado.
Si está utilizando una de las distribuciones de debian / ubuntu, entonces verificaría Slack Roles.
Es un envoltorio elegante para rsync y scripts de shell. Esto tiene muy poco aprendizaje inicial y funciona bien, sin embargo, a medida que crece, puede volverse un poco confuso.

aussielunix
fuente