Vraag Hoe maak je het duidelijk dat je op een productiesysteem bent?


Enkelen van ons in mijn bedrijf hebben root-toegang op productieservers. We zijn op zoek naar een goede manier om het te maken buitengewoon helder wanneer we ingestuurd zijn.

Een paar ideeën die we hebben gehad zijn:

  • Helderrode prompt
  • Beantwoord een raadsel voordat je een schaal krijgt
  • Typ een willekeurig woord voordat je een shell krijgt

Wat zijn enkele technieken die jullie gebruiken om productiesystemen te differentiëren?


132
2017-10-19 18:21


oorsprong


Is er een manier om mensen te leren om te voorkomen dat ze naar productiesystemen gaan? Als je bijvoorbeeld alles hebt ingecheckt in Puppet, hoef je je alleen maar aan te melden bij de productiesystemen voor het oplossen van problemen. - Alex Holst
Je staat root ssh-toegang toe op je productiesystemen ???? !!!!! - symcbean
@symcbean: dat is niet wat Sionide zei. Hij had na jou SSH kunnen betekenen voor je gebruikersaccount. - Zan Lynx
Wordt deze vraag een kandidaat voor communitywiki? - MadHatter
Je kunt het heel duidelijk maken dat het een productiesysteem is door SSH aan te zetten. Het kan niet duidelijker zijn dan dat. - Franci Penov


antwoorden:


De rode prompt is een goed idee, dat ik ook gebruik.

Een andere truc is het plaatsen van een grote ASCII-art-waarschuwing in de /etc/motd het dossier.
Als u zoiets begroet als u inlogt, moet u uw aandacht trekken:

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


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


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

Je zou zo'n waarschuwing kunnen genereren deze website of je zou het kunnen gebruiken figlet  commando.

figlet

Zoals Nicholas Smith in de comments suggereerde, kon je de dingen wat spannender maken met sommige draken of andere dieren die de cowsay commando.

dragon cowsay

In plaats van het bestand / etc / motd te gebruiken, zou je ook kunnen bellen cowsay of figlet in de .profile het dossier.


135
2017-10-19 18:36



Ooh, daar hou ik van! - Sionide21
Als je een opdracht hebt ingetoetst, zie je dat niet meer. - Nils
Dat is waar, de rode prompt is echter handig. - Kenny Rasschaert
Op Windows-servers gebruik ik een felroze bureaubladkleur en felgele titelbalken / kleurenschema, zodat het echt heel erg voor de hand ligt. Dit is onze versie van een gekleurde opdrachtprompt - Mark Henderson♦
Ik zou willen toevoegen ASCII-draken in de mix. - Nicholas Smith


Niet helemaal hetzelfde, maar deze website raadt aan dat uw ontwikkelaars een roze sombrero dragen bij het aanbrengen van wijzigingen in productiesystemen. Je zou waarschijnlijk een soortgelijke regel kunnen hebben om ze te verzamelen.

developer wearing a pink sombrero


75
2017-10-20 04:58



Haha! +1 omdat ik LOL'd was. Maar serieus, mensen kunnen tijdens het dragen hun ontbrekende bril zoeken, ik betwijfel of een hoed als een "constante herinnering" zal dienen. Het helpt ook niets om je te herinneren welk venster dat is. - Felix Dombek
Ja, je zou je proces moeten veranderen in: 1) Verklaren een verlangen om de productie te bewerken. 2) Ga uit de sombrero en sluit alle andere vensters. 3) Voer productiemateriaal terwijl iedereen toekijkt. 4) Log uit van sessie en verwijder sombrero. - Aric TenEyck
"2) Haal de sombrero eruit en sluit alle andere vensters af" Dat zal niet echt werken in mijn bedrijf, want dat is stap 2 van al onze SOP's. Stap 1 is natuurlijk "doe de lichten aan", want met gesloten ramen kan het behoorlijk donker worden in dit kantoor. - Parthian Shot


De grootste die ik heb gebruikt is een discreet naamgevingsschema waarbij prod-systemen duidelijk anders worden genoemd dan test / dev-instanties. Dit maakt de prompt "Username @ Hostname:" stijl zichtbaar anders. En duidelijk bedoel ik meer dan alleen verschillende woorden, ook verschillende formaten:

voorbeeld: PRD-WEB001 versus DEVEL-BOB-WEB001

Dit heeft verschillende dingen die ervoor gaan:

  • Het extra gehydrateerde blok maakt het een set-van-drie in plaats van een set van twee.
  • De eerste van de set heeft een andere lengte.
  • De totale lengte van namen is aanzienlijk anders, waardoor de afstand tussen de opdrachtregel anders is ten opzichte van elkaar en andere tekst in het venster.

En het beste van alles is dat er geen speciale terminal-configs voor de productie nodig zijn om Oops-fouten te voorkomen.

In mijn ervaring wil je iets dat een constante herinnering is van waar je bent. Login-methoden zoals raadsels zijn goed voor ongeveer 10 seconden, totdat je vergeet welk venster dat is. Het enige wat je hoeft te doen is om een ls in de verkeerde map om de onheilspellende login-banner uit beeld te schuiven, begraaf het terminalvenster onder een browservenster terwijl je iets googelt, alt-tab terug naar het verkeerde venster en chaos ontstaat. Het is het beste om een ​​constant visueel signaal te hebben als een aanzienlijk andere opdrachtprompt.


50
2017-10-19 18:33



Dat werkt heel goed voor basissystemen, maar zodra je een ontwikkelaar wijzigt, kreunen en kreunen de ontwikkelaars terwijl de helft van hun links stopt met werken (ongeacht hoe vaak je het eerder hebt gedaan), en soms systeem zelf hinkt langs half werkend totdat u alle talrijke verwijzingen naar de oude naam in configuratiebestanden hebt opgelost. Vooral met propriëtaire software geïnstalleerd, en DNS-aliassen helpen slechts zo veel. Erger nog, het is gemakkelijk om de prompt volledig te vergeten tijdens het wisselen van Windows. - SilverbackNet
Ontwikkelaars moeten instellingen maken die werken in dev / test / staging / productie (dat is wat ik doe, maar het is een ander verhaal). Voor een werkende 'rode prompt' voor bash (harder dan het lijkt), zie mijn antwoord op serverfault.com/a/479718/79266 - RichVel


Een ding dat u moet onthouden, is dat dit een blijvende herinnering moet zijn, niet alleen een indicator tijdens het inloggen. Heel vaak zal iemand meerdere shells tegelijkertijd in verschillende tabs laten lopen en daartussen bewegen. Sommige zullen dev zijn, een beetje productie. Dus als u een opdracht uitvoert, moet u op dat moment een indicator hebben. Dus het hebben van een speciale prompt is de beste methode, naar mijn ervaring, met een aangepaste titel / tabbladbalk die een mooie aanvulling is om gemakkelijk het juiste venster / tabblad te vinden.

Dus zou ik aanraden een gekleurde prompt te hebben (rood is de voor de hand liggende keuze) en alle hoofdletters voor de hostnaam, met hetzelfde gedrag voor de gebruiker (bevoorrecht versus niet-bevoorrecht) als uw prompt. Een paar voorbeelden:

colored prompts example

Meestal iets als

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

in je shell opstartbestand. Deze is voor de blauwe. Vervang de 44 met 41 spar rood, en 42 voor groen. Andere kleuren en wilde patronen ook beschikbaar.


38
2017-10-19 21:26



Voor een werkende 'rode prompt' voor bash (harder dan het lijkt), zie mijn antwoord op serverfault.com/a/479718/79266- toont ook git branch, ingekorte huidige directory, etc. - RichVel


Dit zijn mijn suggesties:

1) Zorg dat de meeste opdrachten (rm, chown, chmod, /etc/init.d/*) in de productieomgeving sudo-toegang vereisen

2) Gebruik PS1 / PS2 om aan te geven dat de gebruiker zich op een Prod-server bevindt

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

Dit toont de opdrachtprompt als

[sridhar@prodappserver901 conf]$

3) Als u putty- / SSH-clients gebruikt, kunt u altijd een unieke achtergrondkleur / -profiel instellen om de productieservers opvallender te maken.


14
2017-10-19 18:50



# 1 is een interessant idee, maar onpraktisch omdat scripts die als daemon-gebruikers worden uitgevoerd mogelijk rm, chmod, etc. moeten gebruiken - Zan Lynx


Bedenk dat uw tweede en derde idee helpen tijdens de eerste verbinding, maar hebben geen waarde als u meerdere terminals open hebt en van de ene naar de andere kant gaat. Het idee van sysadmin1138 om naamgeving te gebruiken is goed wanneer het kan worden toegepast, maar er zijn veel gevallen waar het niet kan zijn.

Het enige dat ik echt de moeite waard vond, is een gekleurde prompt. Ik hou van groen voor dev / testen, rood voor productie en blauw voor machines in de DMZ. Op die manier kan ik, zelfs als ik twee machines met dezelfde naam (in verschillende netwerken) heb, zoals bij het voorbereiden van een vervangende machine, gemakkelijk zien welke ik gebruik.


13
2017-10-19 21:16





De rode / speciale opdrachtprompt is goed. Een ander ding kan een snellere automatische logout zijn op machines die de TMOUT-variabele gebruiken. Als je veel vensters hebt geopend, zullen de productie sneller verdwijnen.

Dit zou tot een ander gedrag moeten leiden:

  1. Ontwikkelen
  2. Test
  3. Breng uw wijzigingen aan een faseserver aan
  4. Pas dan snel een snelle productie toe en implementeer daar (precies zoals u het deed op de staging-server)

11
2017-10-19 19:06





Het werken aan een productiemachine met een gewoon root-account is nooit een goed idee.

Heb een account met volledige sudo-permissies. Staat het opslaan van sudo-sessie niet toe. Verbied sudo su. Gebruik hiervoor een afzonderlijk wachtwoord (niet een die je hebt voor je dev-machine). Waarschijnlijk twoe sudo om te informeren over de productie-identiteit van de shell voor het uitvoeren van de opdracht (via alias).

Het maakt toevallige fouten behoorlijk moeilijk. En rode prompt doet nooit pijn.


8
2017-10-20 02:44



en met "sudo su" bedoel je "sudo -i" of op zijn minst "sudo su -", toch? - Sparr
Whoa! het is Sparr! Kleine wereld :) - Sionide21
Het is onmogelijk om te voorkomen dat mensen een rootshell hebben. (sudo bash). Je kunt een root-shell krijgen van elke 'blacklist'-opstelling. (Als je voorzichtig bent, kun je het stoppen met de instelling van een witte lijst, maar het is meestal niet gegarandeerd.) - user606723
Het is niet de bedoeling om de bedoelde toegang tot de rootshell te voorkomen - alleen enkele veelgebruikte manieren waarop mensen zo gewend zijn dat ze het onbewust kunnen doen, zonder enige aandacht te schenken. - Mihails Strasuns