Question Comment faites-vous comprendre que vous êtes sur un système de production?


Certains d’entre nous dans mon entreprise ont un accès root sur des serveurs de production. Nous cherchons un bon moyen de le faire extrêmement clair quand nous avons ssh'd dans.

Quelques idées que nous avons eues sont:

  • Invite rouge vif
  • Répondre à une énigme avant d'obtenir une coquille
  • Tapez un mot au hasard avant d'obtenir un shell

Quelles techniques utilisez-vous pour différencier les systèmes de production?


132
2017-10-19 18:21


origine


Existe-t-il un moyen d'apprendre aux gens à éviter de passer aux systèmes de production? Si vous avez tout vérifié dans Puppet, par exemple, il vous suffira de vous connecter aux systèmes de production pour le dépannage. - Alex Holst
Vous autorisez l’accès root à ssh sur vos systèmes de production ???? !!!!! - symcbean
@symcbean: ce n'est pas ce que Sionide a dit. Il aurait pu vouloir dire après votre SSH dans votre compte utilisateur. - Zan Lynx
Cette question est-elle en train de devenir candidate au wiki de la communauté? - MadHatter
Vous pouvez rendre extrêmement clair qu'il s'agit d'un système de production en désactivant SSH. Ça ne peut pas être plus clair que ça. - Franci Penov


Réponses:


L'invite rouge est une bonne idée, que j'utilise également.

Une autre astuce consiste à mettre un grand avertissement ASCII-art dans le /etc/motd fichier.
Avoir quelque chose comme ceci vous saluer lorsque vous vous connectez devrait attirer votre attention:

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


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


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

Vous pouvez générer un tel avertissement sur ce site ou vous pouvez utiliser le figlet  commander.

figlet

Comme Nicholas Smith l’a suggéré dans les commentaires, vous pouvez pimenter des choses avec des dragons ou d’autres animaux en utilisant le cowsay commander.

dragon cowsay

Au lieu d'utiliser le fichier / etc / motd, vous pouvez également appeler cowsay ou figlet dans le .profile fichier.


135
2017-10-19 18:36



Ooh j'aime ça! - Sionide21
Si vous avez tapé dans une commande, vous ne le verrez plus. - Nils
C’est vrai que c’est là que l’invite rouge est utile. - Kenny Rasschaert
Sur les serveurs Windows, j'utilise une couleur de bureau rose vif et des barres de titre / jeux de couleurs jaune vif pour que ce soit vraiment, vraiment évident. Ceci est notre version d'une invite de commande colorée - Mark Henderson♦
Je voudrais ajouter Dragons ASCII dans le mix. - Nicholas Smith


Pas tout à fait la même chose, mais ce site web recommande que vos développeurs portent un sombrero rose lors de la modification des systèmes de production. Vous pourriez probablement avoir une règle similaire pour les insérer.

developer wearing a pink sombrero


75
2017-10-20 04:58



Haha! +1 parce que j'ai raté. Mais sérieusement, les gens peuvent chercher leurs lunettes manquantes en les portant, je doute qu'un chapeau serve de "rappel constant". En outre, cela ne vous aide pas à vous rappeler quelle fenêtre est laquelle. - Felix Dombek
Oui, vous devrez changer votre processus pour être: 1) Déclarez le désir de modifier la production. 2) Sortez le sombrero et fermez toutes les autres fenêtres. 3) Faire des trucs de production pendant que tout le monde regarde. 4) Déconnectez-vous de la session et supprimez sombrero. - Aric TenEyck
"2) Sortez le sombrero et fermez toutes les autres fenêtres" Cela ne fonctionnera pas vraiment dans mon entreprise, car c'est la deuxième étape de toutes nos procédures d'exploitation standard. L'étape 1 consiste bien sûr à "allumer les lumières", car avec les fenêtres fermées, il peut faire très sombre dans ce bureau. - Parthian Shot


Le plus important que j'ai utilisé est un schéma de nommage discret dans lequel les systèmes de production sont nommés de manière différente des instances de test / dev. L'invite de style "Nom d'utilisateur @ Nom d'hôte:" est visiblement différente. Et, évidemment, je veux dire plus que des mots différents, mais aussi des formats différents:

exemple: PRD-WEB001 vs DEVEL-BOB-WEB001

Cela a plusieurs choses pour elle:

  • Le bloc hyper-affolé en fait un jeu de trois au lieu d'un jeu de deux.
  • Le premier de l'ensemble est une longueur différente.
  • La longueur totale des noms est très différente, ce qui rend l'espacement des lignes de commande différent les uns des autres et du texte dans la fenêtre.

Et le meilleur de tout, il n’exige pas de configuration de terminal spéciale pour la production, juste pour éviter les erreurs Oops.

D'après mon expérience, vous voulez quelque chose qui vous rappelle constamment où vous en êtes. Les méthodes de connexion telles que les énigmes durent environ 10 secondes, jusqu'à ce que vous oubliez quelle fenêtre est quelle fenêtre. Il suffit de faire un ls dans le mauvais répertoire pour faire défiler la bannière de connexion menaçante, cachez la fenêtre du terminal sous une fenêtre du navigateur tout en recherchant quelque chose, alt-tab pour revenir à la mauvaise fenêtre et le chaos s'ensuit. Il est préférable d’avoir un repère visuel constant comme une invite de commande très différente.


50
2017-10-19 18:33



Cela fonctionne très bien pour les systèmes de base, mais dès que vous modifiez un développement, les développeurs gémissent et gémissent, la moitié de leurs liens cessant de fonctionner (peu importe le nombre de fois que vous l'avez déjà fait), et parfois le Le système lui-même marche à moitié jusqu'à ce que vous corrigiez toutes les nombreuses références à l'ancien nom dans les fichiers de configuration. Surtout avec les logiciels propriétaires installés, et les alias DNS ne sont d’une grande aide. Pire encore, il est facile d'oublier complètement l'invite lors du changement de fenêtre. - SilverbackNet
Les développeurs doivent créer des paramètres qui fonctionnent sur dev / test / staging / production (c'est ce que je fais, mais c'est une autre histoire). Pour une "invite rouge" de travail pour bash (plus difficile qu'il n'y paraît), voir ma réponse à l'adresse serverfault.com/a/479718/79266 - RichVel


N'oubliez pas qu'il s'agit d'un rappel persistant, et pas uniquement d'un indicateur au moment de la connexion. Très souvent, une personne a plusieurs obus qui courent en même temps dans des onglets différents et qui se déplacent entre eux. Certains seront dev, certains production. Ainsi, lorsque vous exécutez une commande, vous devez avoir un indicateur à ce stade. Donc, selon mon expérience, avoir une invite spéciale est la meilleure méthode, un titre / une barre de tabulation modifiée étant un bon complément pour trouver facilement la bonne fenêtre / onglet.

Je vous recommande donc d’avoir une invite colorée (le rouge étant le choix évident) et une majuscule pour le nom d’hôte, avec un comportement similaire pour l’utilisateur (privilégié ou non privilégié). Quelques exemples:

colored prompts example

Généralement quelque chose comme

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

dans votre fichier de démarrage shell. Celui-ci est pour le bleu. Remplace le 44 avec 41 sapin rouge, et 42 pour le vert. Autres couleurs et motifs sauvages disponibles aussi.


38
2017-10-19 21:26



Pour une "invite rouge" de travail pour bash (plus difficile qu'il n'y paraît), voir ma réponse à l'adresse serverfault.com/a/479718/79266 - montre aussi la branche git, le répertoire courant tronqué, etc. - RichVel


Ce sont mes suggestions:

1) Assurez-vous que la plupart des commandes (rm, chown, chmod, /etc/init.d/*) de l'environnement de production nécessitent un accès sudo

2) Utilisez PS1 / PS2 pour indiquer que l'utilisateur est sur un serveur de production.

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

Cela affichera l'invite de commande sous la forme

[sridhar@prodappserver901 conf]$

3) Si vous utilisez des clients Putty / SSH, vous pouvez toujours configurer une couleur / un profil d’arrière-plan unique pour différencier les serveurs de production.


14
2017-10-19 18:50



# 1 est une idée intéressante mais peu pratique car les scripts exécutés en tant qu'utilisateurs de démons pourraient avoir besoin d'utiliser rm, chmod, etc. - Zan Lynx


Considérez simplement que vos deuxième et troisième idées vous aident lors de la connexion initiale mais n’ont aucune valeur si vous avez plusieurs terminaux ouverts et que vous passez de l’un à l’autre. sysadmin1138 a l'idée d'utiliser l'attribution de nom est bonne lorsqu'elle peut être appliquée, mais il existe de nombreux cas où elle ne peut pas l'être.

La seule chose que je trouve vraiment utile est une invite de couleur. J'aime le vert pour dev / testing, le rouge pour la production et le bleu pour les machines de la zone démilitarisée. Ainsi, même si j'ai deux machines du même nom (dans des réseaux différents), par exemple lors de la préparation d'une machine de remplacement, je peux toujours savoir facilement sur laquelle je suis.


13
2017-10-19 21:16





L'invite de commande rouge / spéciale est bonne. Une autre chose pourrait être une déconnexion automatique plus rapide sur les ordinateurs utilisant la variable TMOUT. Si vous avez ouvert plusieurs fenêtres, celles de production disparaîtront plus rapidement.

Cela devrait conduire à un comportement différent:

  1. Développer
  2. Tester
  3. Apportez vos modifications sur un serveur de transfert
  4. Ensuite seulement, lancez-vous rapidement dans la production et déployez-vous là-bas (exactement comme vous l'avez fait sur le serveur intermédiaire).

11
2017-10-19 19:06





Travailler sur une machine de production avec un compte root simple n’est jamais une bonne idée.

Vous avez un compte avec les autorisations complètes sudo. Ne permet pas de sauvegarder la session sudo. Interdire sudo su. Utilisez un mot de passe distinct pour celui-ci (pas celui que vous avez pour votre machine dev). Probablement ajuster sudo pour notifier l’identité de production du shell avant d’exécuter la commande (via alias).

Cela fera des erreurs accidentelles assez difficiles. Et l'invite rouge ne fait jamais de mal.


8
2017-10-20 02:44



et par "sudo su", vous voulez dire "sudo -i" ou tout au moins "sudo su -", n'est-ce pas? - Sparr
Whoa! c'est Sparr! Petit monde :) - Sionide21
Il est impossible d'empêcher les gens d'avoir un shell racine. (sudo bash). Vous pouvez obtenir un shell root à partir de n'importe quelle configuration 'liste noire'. (Si vous êtes prudent, vous pouvez l'arrêter avec une configuration de liste blanche, mais ce n'est généralement pas garanti.) - user606723
Il n’est pas censé empêcher l’accès prévu à la racine du shell - il n’existe que les méthodes habituelles auxquelles les gens sont si habitués pour pouvoir le faire inconsciemment, sans y prêter attention. - Mihails Strasuns


J'y suis allé avec l'idée rapide rouge, et j'ai trouvé assez fastidieux de trouver du code de travail pour .bashrc.

Alors, voici ma version, prête à être incluse dans .bashrc - https://github.com/RichVel/nicer-bash-prompt. Il est complètement déterminé par le nom d’hôte, aussi longtemps que vous avez un modèle approprié pour les noms d’hôte de production (par exemple, xyprod01, xyprod02, etc.) cela fonctionnera bien et vous pourrez utiliser le même .bashrc dans tous les environnements.

Cela ressemble à ceci:

screenshot of red prompt

Cela crée une invite plus agréable, y compris une invite rouge sur les hôtes de production - vous indique également la branche git actuelle et les 2 derniers répertoires dans $ PWD. Il prend soin d'éviter de perturber l'affichage des invites lorsque vous utilisez Ctrl / R (recherche inversée) en bash.

Inclut également une fonction facultative permettant de synchroniser l’historique de votre bash dans toutes les fenêtres du terminal, le long des lignes cette réponse. C'est bien, mais tout le monde ne le veut pas, il est donc désactivé par défaut.


8
2018-02-17 17:33



C'est le meilleur!! MERCI!!! - Luciano