Frage Wie stellst du fest, dass du in einem Produktionssystem bist?


Einige von mir in meiner Firma haben Root-Zugriff auf Produktionsservern. Wir suchen nach einem guten Weg, es zu machen überaus klar, wenn wir ssh'd haben.

Ein paar Ideen, die wir hatten, sind:

  • Helle rote Aufforderung
  • Beantworte ein Rätsel, bevor du eine Muschel bekommst
  • Geben Sie ein zufälliges Wort ein, bevor Sie eine Shell erhalten

Mit welchen Techniken nutzt ihr die Produktionssysteme?


132
2017-10-19 18:21


Ursprung


Gibt es eine Möglichkeit, Leuten beizubringen, sich von Produktionssystemen abschrecken zu lassen? Wenn Sie beispielsweise alles in Puppet eingecheckt haben, müssen Sie sich nur zur Fehlersuche bei Produktionssystemen anmelden. - Alex Holst
Sie erlauben root ssh Zugriff auf Ihre Produktionssysteme ???? !!!!! - symcbean
@symcbean: Das ist nicht das, was Sionide gesagt hat. Er hätte nach dir SSH in dein Benutzerkonto gemeint. - Zan Lynx
Wird diese Frage zu einem Kandidaten für Community-Wiki? - MadHatter
Sie können deutlich machen, dass es ein Produktionssystem ist, indem Sie SSH deaktivieren. Klarer kann es nicht sein. - Franci Penov


Antworten:


Die rote Eingabeaufforderung ist eine gute Idee, die ich auch nutze.

Ein weiterer Trick besteht darin, eine große ASCII-Kunstwarnung in die /etc/motd Datei.
So etwas wie dich zu begrüßen, wenn du dich einloggst, sollte deine Aufmerksamkeit erregen:

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


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


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

Sie könnten eine solche Warnung generieren Diese Internetseite oder du könntest das benutzen figlet  Befehl.

figlet

Wie Nicholas Smith in den Kommentaren vorgeschlagen hat, könntest du Dinge mit Drachen oder anderen Tieren aufpeppen cowsay Befehl.

dragon cowsay

Anstatt die Datei / etc / motd zu verwenden, können Sie auch anrufen cowsay oder figlet in dem .profile Datei.


135
2017-10-19 18:36



Oh, ich mag das! - Sionide21
Wenn Sie einen Befehl eingegeben haben, sehen Sie das nicht mehr. - Nils
Es stimmt, dass hier die rote Eingabeaufforderung nützlich ist. - Kenny Rasschaert
Auf Windows-Servern verwende ich eine hellrosa Desktop-Farbe und leuchtend gelbe Titelleisten / Farbschema, so dass es wirklich, wirklich offensichtlich ist. Dies ist unsere Version einer farbigen Eingabeaufforderung - Mark Henderson♦
Ich möchte hinzufügen ASCII-Drachen in die Mischung. - Nicholas Smith


Nicht ganz dasselbe, aber Diese Internetseite empfiehlt, dass Ihre Entwickler einen rosa Sombrero tragen, wenn sie Änderungen an Produktionssystemen vornehmen. Sie könnten wahrscheinlich eine ähnliche Regel haben, um in sie hineinzuspringen.

developer wearing a pink sombrero


75
2017-10-20 04:58



Haha! +1, weil ich gelogen habe. Aber im Ernst, die Leute können beim Tragen nach ihrer fehlenden Brille suchen, ich bezweifle, dass ein Hut als "ständige Erinnerung" dienen wird. Außerdem hilft es Ihnen nicht, sich daran zu erinnern, welches Fenster welches ist. - Felix Dombek
Ja, du müsstest deinen Prozess ändern, um zu sein: 1) Deklariere den Wunsch, die Produktion zu bearbeiten. 2) Raus aus dem Sombrero und alle anderen Fenster herunterfahren. 3) Mach Produktionsmaterial, während jeder zusieht. 4) Abmelden und Sombrero entfernen. - Aric TenEyck
"2) Raus aus dem Sombrero und alle anderen Fenster herunterfahren" Das wird in meiner Firma nicht wirklich funktionieren, denn das ist der zweite Schritt unserer SOPs. Schritt 1 ist natürlich "Licht anmachen", denn bei geschlossenem Fenster kann es in diesem Büro ziemlich dunkel werden. - Parthian Shot


Das größte, das ich verwendet habe, ist ein diskretes Benennungsschema, bei dem sich prod-Systeme offensichtlich anders als test / dev-Instanzen bezeichnen. Dies macht die Aufforderung "Benutzername @ Hostname:" sichtbar anders. Und mit offensichtlich meine ich mehr als nur verschiedene Wörter, verschiedene Formate auch:

Beispiel: PRD-WEB001 vs DEVEL-BOB-WEB001

Dafür gibt es mehrere Dinge:

  • Der extra-hyperierte Block macht es zu einem Satz von drei anstelle von einem Satz von zwei.
  • Der erste Satz hat eine andere Länge.
  • Die Gesamtlänge der Namen unterscheidet sich deutlich, wodurch sich der Befehlszeilenabstand relativ zueinander und zu anderem Text im Fenster unterscheidet.

Und das Beste: Um Oops-Fehler zu vermeiden, sind keine speziellen Terminal-Konfigurationen für die Produktion erforderlich.

Meiner Erfahrung nach wollen Sie etwas, das Sie ständig daran erinnert, wo Sie sind. Login-Methoden wie Rätsel sind gut für ca. 10 Sekunden, bis Sie vergessen, welches Fenster welches ist. Alles was es braucht ist ein ls im falschen Verzeichnis, um das ominöse Login-Banner aus dem Blickfeld zu rollen, vergraben Sie das Terminal-Fenster unter einem Browser-Fenster, während Sie etwas googlen, Alt-Tab zurück in das falsche Fenster und Chaos entsteht. Es ist am besten, einen konstanten visuellen Hinweis wie eine deutlich andere Befehlszeile zu haben.


50
2017-10-19 18:33



Das funktioniert wirklich gut für grundlegende Systeme, aber sobald man ein Dev- * zu Prod- * ändert, stöhnen und stöhnen die Devs, wenn die Hälfte ihrer Links nicht mehr funktioniert (egal wie oft du es vorher getan hast), und manchmal auch die System selbst hinkt entlang der Hälfte der Arbeit, bis Sie alle zahlreichen Verweise auf den alten Namen in den Konfigurationsdateien beheben. Vor allem mit proprietärer Software installiert, und DNS-Aliase helfen nur so sehr. Schlimmer noch, es ist einfach, die Eingabeaufforderung während des Fensterwechsels vollständig zu vergessen. - SilverbackNet
Entwickler müssen Einstellungen erstellen, die über Dev / Test / Staging / Produktion funktionieren (das ist was ich tue, aber es ist eine andere Geschichte). Für eine funktionierende "rote Aufforderung" für Bash (härter als es scheint), siehe meine Antwort unter serverfault.com/a/479718/79266 - RichVel


Eine Sache, die Sie beachten sollten, ist, dass dies eine dauerhafte Erinnerung sein muss, nicht nur ein Indikator zum Zeitpunkt der Anmeldung. Sehr oft werden mehrere Shells gleichzeitig auf verschiedenen Tabs ausgeführt und zwischen ihnen verschoben. Einige werden dev sein, etwas Produktion. Wenn Sie also einen Befehl ausführen, müssen Sie an dieser Stelle einen Indikator haben. Daher ist eine spezielle Eingabeaufforderung nach meiner Erfahrung die beste Methode, da eine modifizierte Titel- / Tab-Leiste eine gute Ergänzung dazu ist, um das richtige Fenster / Tab leicht zu finden.

Daher empfehle ich eine farbige Eingabeaufforderung (Rot ist die offensichtliche Wahl) und Großbuchstaben für den Hostnamen mit ähnlichem Verhalten für den Benutzer (privilegiert vs. nicht privilegiert) als Ihre Eingabeaufforderung. Einige Beispiele:

colored prompts example

Normalerweise so etwas wie

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

in Ihrer Shell-Startup-Datei. Dieser ist für das Blau. Ersetze das 44 mit 41 Tanne rot und 42 für grün. Andere Farben und wilde Muster verfügbar auch.


38
2017-10-19 21:26



Für eine funktionierende "rote Aufforderung" für Bash (härter als es scheint), siehe meine Antwort unter serverfault.com/a/479718/79266 - Zeigt auch Git-Zweig, abgeschnittenes aktuelles Verzeichnis usw. - RichVel


Das sind meine Vorschläge:

1) Stellen Sie sicher, dass die meisten Befehle (rm, chown, chmod, /etc/init.d/*) in der Produktionsumgebung sudo-Zugriff erfordern

2) Verwenden Sie PS1 / PS2, um anzugeben, dass sich der Benutzer auf einem Prod-Server befindet

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

Dies zeigt die Eingabeaufforderung als

[sridhar@prodappserver901 conf]$

3) Wenn Sie Putty / SSH-Clients verwenden, können Sie immer eine eindeutige Hintergrundfarbe / -profil einrichten, um die Produktionsserver hervorzuheben.


14
2017-10-19 18:50



# 1 ist eine interessante Idee, aber unpraktisch, weil Skripte, die als Daemon-Benutzer ausgeführt werden, möglicherweise rm, chmod usw. verwenden müssen. - Zan Lynx


Bedenken Sie, dass Ihre zweite und dritte Idee während der ersten Verbindung helfen, aber keinen Wert haben, wenn Sie mehrere Terminals öffnen und von einem zum anderen wechseln. Die Idee von sysadmin1138, Benennungen zu verwenden, ist gut, wenn es angewendet werden kann, aber es gibt viele Fälle, in denen es nicht sein kann.

Das einzige, was ich wirklich lohnend finde, ist eine farbige Aufforderung. Ich mag grün für Entwicklung / Test, rot für Produktion und blau für Maschinen in der DMZ. Auf diese Weise kann ich, selbst wenn ich zwei Maschinen mit dem gleichen Namen (in verschiedenen Netzwerken) habe, wie zum Beispiel bei der Vorbereitung einer Ersatzmaschine, immer noch leicht erkennen, auf welcher Maschine ich bin.


13
2017-10-19 21:16





Die rote / spezielle Eingabeaufforderung ist gut. Eine andere Sache könnte eine schnellere automatische Abmeldung bei diesen Maschinen sein, die die Variable TMOUT verwenden. Wenn Sie viele Fenster geöffnet haben, werden die Produktionen schneller verschwinden.

Dies sollte zu einem anderen Verhalten führen:

  1. Entwickeln
  2. Prüfung
  3. Nehmen Sie Ihre Änderungen an einem Staging-Server vor
  4. Erst dann schnell zur Produktion übergehen und dort bereitstellen (genau wie auf dem Staging-Server)

11
2017-10-19 19:06