Pregunta ¿Cómo se hace evidente que estás en un sistema de producción?


Algunos de nosotros en mi empresa tenemos acceso de root en servidores de producción. Estamos buscando una buena manera de hacerlo. extremadamente claro cuando tenemos ssh'd en.

Algunas ideas que hemos tenido son:

  • Indicador rojo brillante
  • Responde a un enigma antes de conseguir una concha.
  • Escriba una palabra al azar antes de obtener una concha

¿Cuáles son algunas técnicas que ustedes usan para diferenciar los sistemas de producción?


132
2017-10-19 18:21


origen


¿Hay alguna forma de enseñar a la gente a evitar el hecho de que se entreguen a los sistemas de producción? Si tiene todo registrado en Puppet, por ejemplo, solo tendrá que iniciar sesión en los sistemas de producción para solucionar problemas. - Alex Holst
Usted permite el acceso de root ssh en sus sistemas de producción ???? !!!!! - symcbean
@symcbean: eso no es lo que dijo Sionide. Él podría haber querido decir después de que SSH en su cuenta de usuario. - Zan Lynx
¿Esta pregunta se está convirtiendo en un candidato para wiki de la comunidad? - MadHatter
Puede dejarlo muy claro que es un sistema de producción si lo deshabilita SSH. No puede ser más claro que eso. - Franci Penov


Respuestas:


El indicador rojo es una buena idea, que también utilizo.

Otro truco es poner una gran advertencia ASCII-art en el /etc/motd expediente.
Tener algo como esto te saludará cuando inicies sesión debería llamar tu atención:

 _______ _ _ _____ _____ _____ _____
| __ __ | | | | _ _ | | ____ | | _ _ | | ____ | / \
   | | | | __ | | | | | (___ | | | (___ / \
   | | | __ | | | \ ___ \ | | \ ___ \ / / \ \
   | | | | | | _ | | _ ____) | _ | | _ ____) | / ____ \
   | _ | | _ | | _ | _____ | _____ / | _____ | _____ / / _ / \ _ \


 _____ _____ ____ _____ _ _ _____ _______ _____ ____ _ _
| __ \ | __ \ / __ \ | __ \ | | | | / ____ | __ __ | _ _ / __ \ | \ | |
| | __) | | __) | | | | | | | | | | | | | | || | | | \ | |
| ___ / | _ / | | | | | | | | | | | | | | || | | | . `|
| | | | \ \ | | __ | | | __ | | | __ | | | ____ | | _ | || | __ | | | \ |
| _ | | _ | \ _ \\ ____ / | _____ / \ ____ / \ _____ | | _ | | _____ \ ____ / | _ | \ _ |


 __ __ _____ _ _ _____ _ _ ______
| \ / | / \ / ____ | | | | _ _ | \ | | ____ |
| \ / | / \ | | | | __ | | | | | \ | | | __
| | \ / | | / / \ \ | | | __ | | | | . `| __ |
| | | | / ____ \ | ____ | | | | _ | | _ | | \ | | ____
| _ | | _ / _ / \ _ \ _____ | _ | | _ | _____ | _ | \ _ | ______ |

Usted podría generar tal advertencia en este sitio web o podrías usar el figlet  mando.

figlet

Tal como lo sugirió Nicholas Smith en los comentarios, podrías animar las cosas con algunos dragones u otros animales usando cowsay mando.

dragon cowsay

En lugar de usar el archivo / etc / motd, también puede llamar cowsay o figlet en el .profile expediente.


135
2017-10-19 18:36



Ooh me gusta eso! - Sionide21
Si escribiste algún comando no lo verás más. - Nils
Cierto, ahí es donde el indicador rojo es útil, sin embargo. - Kenny Rasschaert
En los servidores de Windows, uso un color de escritorio de color rosa brillante y barras de título / combinación de colores de color amarillo brillante para que sea realmente obvio. Esta es nuestra versión de un símbolo del sistema de color - Mark Henderson♦
Me gustaria agregar Dragones ASCII en la mezcla - Nicholas Smith


No es exactamente lo mismo, pero este sitio web recomienda que sus desarrolladores usen un sombrero rosa al realizar cambios en los sistemas de producción. Probablemente podrías tener una regla similar para adentrarte en ellos.

developer wearing a pink sombrero


75
2017-10-20 04:58



¡Jaja! +1 porque LOL'd. Pero en serio, las personas pueden buscar sus lentes perdidos mientras las usan, dudo que un sombrero sirva como un "recordatorio constante". Además, no hace nada para ayudarte a recordar qué ventana es cuál. - Felix Dombek
Sí, tendrías que cambiar tu proceso para ser: 1) Declara un deseo de editar la producción. 2) Salga del sombrero y cierre todas las demás ventanas. 3) Hacer cosas de producción mientras todo el mundo está mirando. 4) Cerrar sesión de sesión y quitar sombrero. - Aric TenEyck
"2) Salga del sombrero y cierre todas las demás ventanas" Eso realmente no funcionará en mi empresa, ya que ese es el paso 2 de todos nuestros SOP. El paso 1 es, por supuesto, "encender las luces" porque, con las ventanas cerradas, puede oscurecer bastante en esta oficina. - Parthian Shot


El más grande que he usado es un esquema de nomenclatura discreto donde los sistemas prod se nombran obviamente diferentes a las instancias de prueba / dev. Esto hace que el mensaje de "Nombre de usuario @ Nombre de host:" sea visiblemente diferente. Y por obvio quiero decir más que solo palabras diferentes, formatos diferentes también:

Ejemplo: PRD-WEB001 vs DEVEL-BOB-WEB001

Esto tiene varias cosas a su favor:

  • El bloque extra de hypenated lo convierte en un conjunto de tres en lugar de un conjunto de dos.
  • El primero del conjunto es una longitud diferente.
  • La longitud total de los nombres es marcadamente diferente, lo que hace que el espaciado de la línea de comando sea diferente entre sí y con el otro texto de la ventana.

Y lo mejor de todo, no requiere configuraciones de terminal especiales para la producción solo para evitar los errores de Oops.

En mi experiencia, quieres algo que sea un recordatorio constante de dónde estás. Los métodos de inicio de sesión como los enigmas son válidos durante aproximadamente 10 segundos, hasta que se olvida qué ventana es cuál. Todo lo que se necesita es hacer una ls en el directorio incorrecto para desplazar el siniestro banner de inicio de sesión fuera de la vista, enterrar la ventana del terminal en una ventana del navegador mientras se busca en Google algo, se vuelve a presionar alt-tab en la ventana incorrecta y se produce un caos. Lo mejor es tener una señal visual constante como un indicador de comando significativamente diferente.


50
2017-10-19 18:33



Eso funciona realmente bien para los sistemas básicos, pero tan pronto como cambias un dev- * para producir- * los devs gimen y gruñen cuando la mitad de sus enlaces dejan de funcionar (no importa cuántas veces lo hayas hecho antes), y algunas veces el El propio sistema se limita a lo largo de la mitad del trabajo hasta que arregla todas las numerosas referencias al nombre antiguo en los archivos de configuración. Especialmente con el software propietario instalado, y los alias de DNS solo ayudan mucho. Peor aún, es fácil olvidar el aviso por completo al cambiar de ventana. - SilverbackNet
Los desarrolladores necesitan crear configuraciones que funcionen en dev / test / staging / production (eso es lo que hago, pero es otra historia). Para un 'indicador rojo' de trabajo para bash (más difícil de lo que parece), vea mi respuesta en serverfault.com/a/479718/79266 - RichVel


Una cosa que debe tener en cuenta es que esto debe ser un recordatorio persistente, no solo un indicador al momento de iniciar sesión. Muy a menudo, alguien tendrá varios shells ejecutándose al mismo tiempo en diferentes pestañas y se moverá entre ellos. Algunos serán dev, algunos de producción. Entonces, cuando está ejecutando un comando, necesita tener un indicador en ese punto. Por lo tanto, tener un aviso especial es el mejor método, según mi experiencia, con un título / barra de pestañas modificado que es un buen complemento para encontrar la ventana / pestaña correcta con facilidad.

Por lo tanto, recomiendo tener un indicador de color (el rojo es la opción obvia) y todas las mayúsculas para el nombre de host, con un comportamiento similar para el usuario (privilegiado vs. no privilegiado) como su indicador. Algunos ejemplos:

colored prompts example

Usualmente algo como

set prompt =  "%{\033[1;44m%}`whoami`@`hostname -s`#%{\033[0m%} "` 

en su archivo de inicio de shell. Este es para el azul. Reemplace la 44 con 41 abeto rojo, y 42 para el verde Otros colores y patrones salvajes disponibles también.


38
2017-10-19 21:26



Para un 'indicador rojo' de trabajo para bash (más difícil de lo que parece), vea mi respuesta en serverfault.com/a/479718/79266- También muestra git branch, directorio actual truncado, etc. - RichVel


Estas son mis sugerencias:

1) Asegúrese de que la mayoría de los comandos (rm, chown, chmod, /etc/init.d/*) en el entorno de producción requieren acceso a sudo

2) Utilice PS1 / PS2 para indicar que el usuario está en un servidor Prod

bash-3.2$  export PS1="[\u@\h \W]\$ "

Esto mostrará el símbolo del sistema como

[sridhar@prodappserver901 conf]$

3) Si utiliza clientes Putty / SSH, siempre puede configurar un color / perfil de fondo único para que los servidores de producción se destaquen.


14
2017-10-19 18:50



La # 1 es una idea interesante pero poco práctica porque los scripts que se ejecutan como usuarios de daemon pueden necesitar usar rm, chmod, etc. - Zan Lynx


Simplemente considere que su segunda y tercera idea ayudan durante la conexión inicial, pero no tienen ningún valor cuando tiene múltiples terminales abiertos y se mueven de una a otra. La idea de sysadmin1138 de usar nombres es buena cuando se puede aplicar, pero hay muchos casos en los que no se puede.

Lo único que he encontrado que realmente vale la pena es un aviso coloreado. Me gusta el verde para desarrollo / pruebas, el rojo para producción y el azul para máquinas en la DMZ. De esa manera, incluso si tengo dos máquinas con el mismo nombre (en redes diferentes), como cuando preparo una máquina de reemplazo, puedo decir fácilmente cuál estoy usando.


13
2017-10-19 21:16





El indicador de comandos rojo / especial es bueno. Otra cosa podría ser un cierre de sesión automático más rápido en esas máquinas que utilizan la variable TMOUT. Si ha abierto muchas ventanas, las de producción desaparecerán más rápido.

Esto debería llevar a un comportamiento diferente:

  1. Desarrollar
  2. Prueba
  3. Realiza tus cambios en un servidor de pruebas.
  4. Solo entonces haga un guión rápido para la producción y despliegue allí (exactamente como lo hizo en el servidor de pruebas)

11
2017-10-19 19:06





Trabajar en una máquina de producción con una cuenta raíz simple nunca es una buena idea.

Tener una cuenta con permisos de sudo completos. No permite guardar sesión sudo. Prohibir sudo su. Use una contraseña por separado (no la que tiene para su máquina de desarrollo). Probablemente ajuste sudo para notificar sobre la identidad de producción del shell antes de ejecutar el comando (a través de un alias).

Cometerá errores accidentales bastante difíciles. Y el aviso rojo nunca duele.


8
2017-10-20 02:44



y por "sudo su" quieres decir "sudo -i" o al menos "sudo su -", ¿verdad? - Sparr
Whoa! es Sparr! Mundo pequeño :) - Sionide21
Es imposible evitar que las personas tengan una concha de raíz. (sudo bash). Puede obtener un shell de root desde cualquier configuración de 'lista negra'. (Si tiene cuidado, puede detenerlo con una configuración de la lista blanca, pero normalmente no está garantizado). - user606723
No se supone que impida el acceso previsto al shell de root, solo algunas formas comunes en que las personas están acostumbradas para que puedan hacerlo de manera subconsciente, sin prestar atención. - Mihails Strasuns