NOTA: Hice esta pregunta esta mañana con respecto a los cuadros EC2, pero solo obtuve enlaces a herramientas para iniciar y detener instancias, así que reformularé ...
Tengo algunas cajas de 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, mover archivos, etc.
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 saber qué están haciendo otras personas en mi posición.
¿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 cuadros remotos de Windows es trivial, ya que simplemente puede usar el escritorio remoto y transferir archivos a través de la red. ¿Hay un equivalente a esto en el mundo de Linux?
¿Está haciendo los cambios del archivo 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 el servidor 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 algo del dolor sería bienvenida!
fuente
Respuestas:
¿Escaso? ¿Qué demonios quieres decir? Disculpe por despotricar, pero descartar ssh, vim y wget como doloroso es casi insultante. De su pregunta deduzco que usted es principalmente un programador para su trabajo diurno, así que entiendo la pregunta. Pero, sinceramente, no contrataría a un administrador de Linux que no se sienta cómodo con ninguna de las tres herramientas que mencionó.
Para tareas de administrador, nunca uso un entorno X. No necesita uno, solo ocupará recursos del sistema y, la mayoría de las veces, son un obstáculo en lugar de una ayuda. La mayoría de las herramientas de configuración de la GUI (bueno, prácticamente todas, realmente) solo ofrecen un subconjunto de la opción de configuración que puede establecer en un archivo de configuración con vim.
Administrar un cuadro de Linux no es menos trivial que administrar un cuadro de Windows. Solo toma un tiempo obtener un conjunto de habilidades decente.
¿Y una transferencia de archivos de red equivalente? Mucho. scp, sftp, ftp, nfs, cifs / smb (protocolos de intercambio de archivos de Windows) y más.
Depende de lo que estoy haciendo. La mayoría de las cosas que hago directamente en los archivos de configuración en la máquina (para cuadros de desarrollo y prueba) y luego inserto el archivo en un canal de configuración en nuestro servidor satelital, después de lo cual implemento el archivo directamente en todos los servidores (para cuadros de producción ) Realmente, vim es un tesoro. Es decir, cuando descubres cómo usarlo correctamente.
scp todo el camino y tal vez algo de sftp, y te sugiero que también lo hagas. Nunca, nunca use FTP para mover archivos confidenciales (por ejemplo, archivos de configuración) a través de una red pública. No uso una red asignada porque, de nuevo, todo lo que necesito está en el servidor. Si te refieres a archivos c y no a archivos de configuración aquí, generalmente uso algo como svn o git y luego empujo mis cambios al cuadro.
Ya los está utilizando: ssh, scp, wget y vim. Esos no son dolor. Puede haber algunos dolores de dentición, mientras te das cuenta de lo poderosos que son. Pero, para recuperar la analogía de Windows, me siento seriamente obstaculizado cuando tengo que usar una caja de Windows. Para ti es al revés. Es justo a lo que estás acostumbrado. Entonces, dale un poco de tiempo y vendrá a ti.
fuente
Ya mencionaste ssh, vim y wget, que es esencial y perfecto. Algunas herramientas adicionales que pueden facilitarle la vida:
1. Pantalla GNU / byobu
"GNU Screen es un multiplexor de terminal gratuito que permite al usuario acceder a múltiples sesiones de terminal separadas dentro de una sola ventana de terminal o sesión de terminal remota. Es útil para manejar múltiples programas desde la línea de comandos y para separar programas del shell que comenzó el programa." (Desde la página GNU_Screen en wikipedia)
Una ventaja principal es que puede tener uno o varios terminales virtuales que se encuentran exactamente en el mismo estado en que los dejó cuando regresa (es decir, vuelva a iniciar sesión mediante ssh). Esto también es bueno cuando su conexión se interrumpe por alguna razón.
La pantalla funciona independientemente del software que utiliza para conectarse a la caja (vive en el servidor), por lo que combina bien con la masilla o la mayoría de los demás software de terminal.
Este artículo muestra algunas cosas buenas que puede hacer con él: http://www.pastacode.de/extending-gnu-screen-adding-a-taskbar/en/
Una buena alternativa es byobu, que viene muy bien preconfigurado en algunas distribuciones: http://byobu.co/
2. Comandante de medianoche
Una herramienta de navegación tipo consola basada en gráficos para ver y manipular archivos y directorios.
También puede hacer transferencias remotas seguras. Hay un cliente FISH y FTP integrado.
Esto significa que tiene 2 ventanas de texto una al lado de la otra en una consola de línea de comandos y una muestra su casilla remota y la otra donde sea que la conecte (que también puede ser su sistema local). Luego puede navegar por ambos sistemas de archivos uno al lado del otro y marque o investigue archivos individuales o archivos de árbol y también cópielos o muévalos entre ubicaciones. FISH es seguro, FTP no lo es. Muy potente y simple para principiantes.
3. rsync
Para una transferencia y sincronización de archivos rápida, segura y confiable entre diferentes ubicaciones
4. VCS
Uso de un sistema de control de versiones distribuido como bazar, mercurial o git para actualizar el código. Github o Bitbucket ofrecen alojamiento de código comercial, pero no es necesario, también puede usarlo de manera eficiente en sus propias máquinas.
Joseph Kern: ¿puedes explicar cómo usas exactamente git para la organización de configuración remota?
5. Clientes terminales
En sistemas similares a Unix ya están a bordo, en Windows puede usar Putty, Tera Term, Mind Term o Pandora. O haga una instalación de cygwin y ssh desde las ventanas del terminal de cygwin a los cuadros remotos (lo que tiene más ventajas, pero esta es una cuestión de lo que prefiere).
6. Túneles y reenvío de puertos
Puede ser útil reenviar ciertos puertos de forma segura a su máquina local. Por ejemplo, puede reenviar el puerto mysql TCP 3306 o postgres TCP 5432 e instalar alguna herramienta de administración de base de datos localmente.
Puede construir túneles desde máquinas Windwos con masilla (o línea de comando basada en su hermano pequeño plink), con cygwin y Mindterm también pueden hacer reenvío de puertos. Si está localmente en una máquina similar a Unix, puede usar ssh odr plink para crear ese túnel.
Para crear un túnel más estable y permanente para varios puertos, recomiendo OpenVPN. El método de túnel de "clave precompartida" de punto a punto no es tan difícil de instalar.
7. Tener un sistema local similar a Unix
Cuando su máquina local es una Mac, ya tiene esto, puede abrir un shell local. Cuando su estación de trabajo está basada en Windows, podría ser útil crear un servidor similar a Unix local, que esté en la misma red local. Esta puede ser una máquina diferente en una habitación diferente conectada al mismo enrutador o conmutador. O si solo desea una máquina, puede instalar el servidor vmware gratuito y crear una máquina virtual, preferiblemente el mismo sistema operativo que su máquina remota. Instale un servidor de samba en él y puede "usar en red" los recursos compartidos de samba desde su escritorio.
Si tiene un servidor ssh en el servidor local y abre el puerto 22 en su enrutador, puede ingresar a su sistema local cuando esté fuera.
Puede construir túneles para máquinas remotas o transferir y sincronizar archivos y árboles de archivos completos con rsync. Puede usarlo para pruebas, para VSC, para desarrollo local, como servidor web local, para fines de capacitación.
Puede extraer copias de seguridad de máquinas remotas. Puede crear trabajos cron locales que realicen copias de seguridad de forma automática (por ejemplo, bases de datos que desea guardar de forma local regularmente)
8. X GUI remota
Si está trabajando físicamente en Linux como un sistema, también es posible ejecutar aplicaciones GUI en sus servidores Linux que dibujan la GUI en su máquina local. Esto podría ser una herramienta de comparación de archivos gráficos o casi cualquier cosa que desee.
Aunque no es muy común y en muchos casos no es necesario usar el software gui para la administración de Linux Box, en algunos casos puede resultarle útil si puede.
En la máquina remota, asegúrese de que en / etc / ssh / sshd_config exista esta línea:
Reinicie el servidor ssh con
Luego, la próxima vez que inicies sesión con
Tendrá un túnel X, intente instalar xclock en el servidor remoto para realizar pruebas y ejecutar
xclock
IIN la sesión ssh que acabo de mencionar. Debería aparecer un simple reloj x para fines de prueba en su GUI de Linux.Esto también es posible en una Mac si instala un entorno X local.
9. Si tiene un montón de cuadros o tareas similares: use una herramienta de configuración del sistema
Si tiene una granja de servidores o realiza grandes implementaciones en la nube con muchas máquinas redundantes o de otro modo iguales o similares, puede usar esto.
Probablemente no tendría sentido, si la mayoría de las cajas son individuales o tienen diferentes sistemas operativos o diferentes versiones ejecutándose.
Hay varias herramientas:
chef
http://www.getchef.com/chef/ Vea la brillante respuesta de Evan Anderson a continuación: /server//a/28789/45819puppet
el otro gran jugador http://puppetlabs.com/salt
parece prometedor http://www.saltstack.com/10. Implemente contenedores de aplicaciones con
docker
Esto va incluso un paso más allá. Docker es un proyecto de código abierto que automatiza la implementación de aplicaciones dentro de contenedores de software: https://www.docker.io
11. Utilice Google Compute Engine con gestión de implementación automática
https://cloud.google.com/products/compute-engine/
Google ofrece máquinas virtuales Linux con posibilidades muy interesantes. Puede implementar rápidamente grandes grupos de máquinas virtuales con herramientas que incluyen una API RESTful, una interfaz de línea de comandos y una consola web. También puede usar herramientas como RightScale y Scalr para administrar automáticamente su implementación .
fuente
cd /#sh:<user>@<server>:<directory>
iniciar sesión en una máquina remota para navegar y transferir archivos, y dado que Ctrl-o lo cambia temporalmente a la consola. ¡Otra Ctrl-o te devuelve a MC con solo presionar una tecla!Si está buscando una buena GUI para trabajar con la administración de archivos a través de SSH desde los cuadros de Windows, eche un vistazo a WinSCP: http://winscp.net
No administro ninguna instancia EC2, pero en general si tengo más de una máquina desempeñando un rol, intentaré escribir un script para realizar el trabajo en todos los cuadros similares, en lugar de hacer cambios cuadro por cuadro .
Me gustaría comenzar a usar Puppet ( http://reductivelabs.com/products/puppet/ ), porque hace que la administración del sistema sea más un ejercicio de administración de la configuración. Todavía no he tenido los ciclos de repuesto para echarle un vistazo en detalle, pero he escuchado cosas muy buenas.
fuente
Debe considerar una herramienta de administración de configuración del sistema como Chef.
Ya casi no manejo los sistemas manualmente a través de sesiones SSH. Guardo todo el código para aplicaciones web y proyectos en un repositorio de código fuente al que puedo acceder desde los sistemas que los ejecutan, por ejemplo, sitios web en EC2. Cuando se trabaja en la nube, es esencial contar con infraestructura automatizada.
El flujo de trabajo básico se ve así. Primero, para el código de la aplicación y los datos de configuración:
Para la configuración, agregue:
Los sistemas se configuran como instalaciones de paquetes, creación de usuarios, archivos de configuración generados a partir de plantillas, etc.
[Casi] nunca edito manualmente archivos de configuración, datos de aplicaciones o cualquier otra cosa en los sistemas remotos directamente. Los cambios se realizan a través de mi repositorio local y se envían al maestro. Sé que mis sistemas se configurarán correctamente cada vez, sin importar si tengo que matar una instancia y reiniciarla.
Los archivos necesarios para la configuración se sirven directamente desde el servidor Chef, que es solo una aplicación web (merb, que se ejecuta en Apache + Passenger). El acceso para los clientes se controla a través de la autorización openid.
Mi configuración incluye ganchos en Nagios y Munin, por lo que también obtengo monitoreo y tendencias sin tener que hacer nada manualmente para configurarlos.
Las mejores prácticas en estos días se están inclinando hacia la gestión de configuración automatizada. Si todavía está haciendo las cosas manualmente, está trabajando demasiado duro.
fuente
¿Qué hay de malo con ssh, vim y wget? Joyas desconocidas para la mayoría de los usuarios de Windows, en mi opinión. :-)
A veces uso gVim de forma remota a través de FTP o SFTP.
Si prefiere usar la GUI en la máquina Linux, puede ejecutar un servidor X (consulte Cygwin para obtener uno) en su host local y reenviar su pantalla a través de su conexión ssh.
Nunca consideré una solución VPN que valiera la pena el gasto o la molestia para administrar Linux.
Si está desarrollando y necesita ejecutar sus trabajos de desarrollo en el servidor, simplemente configure un cliente de control de revisión en el servidor, inicie sesión de forma remota, sincronice el cliente y ejecute su proceso.
fuente
¿Se pretende este curricán?
La administración remota de cuadros de Windows no es trivial. La administración remota de cajas Unix se debe a que fueron diseñadas para ser administradas de forma remota y para estar en una red. Para Windows, era una conexión a un sistema que no estaba diseñado desde cero para vivir en una red.
Esto es anecdótico, pero según la experiencia en varias compañías, la relación entre el servidor y el administrador del sistema para las cajas de Linux es mucho, mucho más alta que para Windows. Simplemente porque la automatización en Windows no es trivial y una interfaz gráfica de usuario siempre será más lenta que las secuencias de comandos. Dicho esto, hay administradores de Windows que pueden acariciar una infraestructura de Windows para que sea fácil de administrar, sin embargo, estos administradores son muy raros.
Todas las herramientas que necesita están disponibles de forma predeterminada en cada distribución de Linux. Si desea un inicio de sesión gráfico, continúe y hágalo, solo desperdicia CPU y memoria y le dará los mismos problemas que tiene con Windows. Y como ya se dijo, para más de un puñado de cajas, debe considerar títeres, chef, cfengine o una de las muchas otras herramientas disponibles.
fuente
Dice que está utilizando SSH para administrar "unos" cuadros. Recomiendo encarecidamente ClusterSSH para escribir los mismos comandos a todos a la vez (suponiendo que tengan un propósito similar).
http://www.linux.com/learn/tutorials/413853:managing-multiple-linux-servers-with-clusterssh
El uso es tan simple como "cssh -l username clustername", que abrirá muchas ventanas uxterm que puede administrar de una vez o por separado. El clúster se define mediante una lista de IP en un archivo de configuración. Lo único que falta es el soporte X, que yo sepa.
EDITAR: He migrado a Terminator ya que el diseño de múltiples terminales se puede guardar y restaurar fácilmente, además de obtener 10 túneles X simultáneos si es necesario. Facilita la configuración de las computadoras del servidor y del cliente al mismo tiempo.
Además, Fabric es útil cuando hago actualizaciones de software en mis clientes, básicamente reemplazando todo ese material zip / scp / unzip / cp.
fuente
Yo suelo:
Poner mis configuraciones bajo control de versiones fue probablemente la cosa más inteligente que hice. Utilizo herramientas basadas en SSH tan a menudo como sea posible para reducir la huella administrativa y la superficie de ataque.
Actualmente todos mis repositorios de git son locales. En el futuro, moveré las configuraciones a repositorios remotos.
fuente
No se olvide de usar Webmin , una interfaz basada en web para la administración del sistema para Unix / Linux.
fuente
SSH siempre ha sido suficiente para mí. Hay otras opciones X11 es esencialmente escritorio remoto, aunque es intrínsecamente inseguro ya que solo no está encriptado. Sin embargo, se puede tunelizar a través de una conexión SSH (y obtiene el beneficio de no tener que abrir puertos adicionales). Por supuesto, esto supone que tiene un entorno X instalado en el servidor.
SFTP (que es ftp sobre SSH, por lo que, una vez más, no es necesario abrir puertos adicionales) se puede utilizar para colocar archivos en el servidor en lugar de extraerlos. Puede encontrar un buen cliente sftp de Windows en http://filezilla-project.org/
fuente
Me desplazo al cuadro y hago cambios en la línea de comandos y con editores como vi / nano cuando el cambio es simple. Para un cambio más complejo en el archivo, como editar múltiples códigos fuente al mismo tiempo, uso BBEdit en Mac OS X. Puede acceder al sistema de archivos usando SCP. Estoy seguro de que existe dicho editor para Windows y Linux. sshfs es una forma de acceder a su sistema de archivos de forma remota utilizando ssh.
fuente
Definitivamente PuTTY; Además del cliente ssh, también hay un cliente SCP basado en Windows.
fuente
Línea de comando sobre ssh para linux (ya que ni siquiera tienen instalado X11) y una combinación de ssh y ARD para mis máquinas Apple.
Tenga en cuenta que nunca uso Apple Remote Desktop para transferir archivos, porque AFP sobre TCP es ridículamente lento ; Yo solo uso
scp
.fuente
Si desea acceso gráfico remoto, seguramente querrá configurar VNC.
Si desea editar sus archivos de forma remota a través de SSH, tiene algunas opciones:
mc
) para mover sus archivos de un lado a otroDespués de editar su archivo, simplemente use SSH para, por ejemplo, comenzar a compilar.
Otra cosa a considerar es usar un sistema de control de versiones. bzr es realmente agradable; es fácil de configurar y está diseñado para ser fácil de usar. Podría trabajar en una computadora, impulsar la actualización, extraer la actualización en su servidor, ejecutar comandos y revertir si las cosas salen mal.
fuente
SSH hace el trabajo la mayor parte del tiempo. Aprender las herramientas de línea de comandos disponibles para usted vale la pena. Si hay herramientas GUI que quiero usar, solo uso VNC .
Para mover archivos, suelo montar un recurso compartido CFIS / SAMBA en mi máquina local.
fuente
Para cambios simples, SSH y SCP hacen el truco. Si necesita realizar cambios en un mayor número de máquinas, debe buscar un sistema de administración de configuración. Podrá iniciar / detener el servicio, cambiar el contenido de los archivos de configuración y verificar que sus sistemas estén en un estado conocido.
Prefiero usar Bcfg2 pero Puppet y CFEngine también son populares.
Tengo Bcfg2 ejecutándose cada hora en todos mis servidores, aunque también se puede ejecutar manualmente. Hay un depósito central controlado por versión de todos los archivos de configuración del sistema para que podamos realizar un seguimiento de las modificaciones que se realicen. El sistema funciona extremadamente bien y es un gran paso adelante desde el inicio de sesión en los servidores de forma manual y las modificaciones.
fuente
A menudo uso Komodo sobre un enlace SFTP .
fuente
La administración de sistemas Windows siempre ha sido "pesada": es decir, se necesita un entorno de ventanas completo, que requiere estar en el sitio o en una aplicación de red como Remote Desktop o VNC.
UNIX se diseñó teniendo en cuenta las redes, por lo que las herramientas están diseñadas para trabajar en la red, no para verse bien. Un servidor UNIX nunca debe tener ese entorno de ventanas (X11 generalmente) configurado.
La interfaz minimalista de SSH, wget y vim es mucho más propicia para la red; de hecho, vi fue diseñado para funcionar en una línea de módem de 300 baudios.
De hecho, existen herramientas gráficas que lo ayudarán a trabajar con sistemas remotos UNIX y Linux (wsp era uno; gvim puede ser otro).
La forma habitual de administrar sistemas UNIX es iniciar sesión en la máquina y trabajar en la misma máquina. No hay necesidad de mover archivos solo para editarlos. Lo único que debe recordarse es asegurarse de que la configuración sea buena y probarla siempre que sea posible.
fuente
SSH para acceder, scp si necesito transferir una cantidad limitada de archivos. Directorios compartidos a través de SMBFS / SAMBA si REALMENTE lo necesitamos. Por lo general, es una pérdida de tiempo. Algunos de nuestros empleados menos * nix-competentes utilizan webmin bloqueado para acceso de subred local a través de HTTPS.
fuente
Shellinabox
Emulación de terminal en el cliente
Butterfly también es un servidor web (escrito en python) que alimenta un terminal web emulado del lado del cliente con todas las funciones.
fuente