Venant de l’administration Windows, je veux aller plus loin dans Linux (Debian). Une de mes questions brûlantes à laquelle je ne pouvais pas répondre en cherchant sur le Web (je ne l'ai pas trouvé) est la suivante: comment puis-je obtenir la communication à distance dite "un-à-plusieurs" comme dans PowerShell pour Windows?
Pour résumer les bases, je dirais:
Mon point de vue sur Linux:
- Je peux SSH dans un serveur et tapez ma commande
- Je reçois le résultat. Pour un environnement de 10 serveurs, je devrais écrire un script (perl / python?) Qui envoie la commande à chacun d’eux?
Mon expérience de Windows:
Je tape ma commande et avec "invoke-command", je peux "envoyer" ceci à un groupe de serveurs (peut-être à partir d'un fichier texte) pour s'exécuter simultanément et obtenir le résultat (en tant qu'objet pour un travail ultérieur).
Je peux même établir plusieurs sessions, la connexion est maintenue en arrière-plan et envoyer de manière sélective des commandes à ces sessions, ainsi que des entrées et des sorties distantes comme je le souhaite.
(J'ai entendu parler du chef, de la marionnette, etc. Est-ce quelque chose comme ça?)
Update 2019:
Après avoir essayé beaucoup - je suggère Rex (voir ce commentaire ci-dessous ) - une configuration facile (en fait, il n’a besoin que de ssh, rien d’autre) et son utilisation (si vous connaissez juste un peu le perl, c’est encore mieux, mais c’est optionnel)
Avec Rex (ify ) vous pouvez faire la commande adhoc et la faire passer à une vraie gestion de configuration (... ce qui signifie: c’est un CM en premier lieu, mais bien aussi pour les tâches ad hoc) Le site web semble obsolète, mais pour le moment (à partir du 01/2019) il est en développement actif et le canal IRC est également actif.
Avec le nouvel openssh de Windows, il y a encore plus de possibilités
tu peux essayer:
rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'
:setw synchronize-panes on
( unix.stackexchange.com/a/124800/161003 )Réponses:
Sommaire
clusterssh
Pour envoyer des commandes à distance à plusieurs serveurs, pour un débutant, je recommanderais clusterssh
Pour installer
clusterssh
dans Debian:Un autre tutoriel sur clusterssh :
Ansible
Ansible est une alternative très intéressante à Puppet pour la gestion à distance de plusieurs systèmes d’administration . Il est plus maigre et ne nécessite pas d'agents distants dédiés car il fonctionne sur SSH (il a également été acheté par RedHat).
Les Playbooks sont plus élaborés que les options en ligne de commande.
Cependant, pour commencer à utiliser Ansible, vous avez besoin d’une installation simple et de la configuration du fichier texte de la liste des clients.
Ensuite, pour exécuter une commande sur tous les serveurs, procédez comme suit:
La sortie est également très bien formatée et séparée par règle / serveur et, lors de son exécution en arrière-plan, peut être redirigée vers un fichier et consultée ultérieurement.
Vous pouvez commencer avec des règles simples, et l’utilisation d’Ansible deviendra de plus en plus intéressante au fur et à mesure que vous grandissez sous Linux, et votre infrastructure s’agrandit. En tant que tel, il fera beaucoup plus que PowerShell.
A titre d'exemple, un Playbook très simple pour mettre à niveau les serveurs Linux que j'ai écrit:
Il a également défini de nombreux modules qui vous permettent d’écrire facilement des stratégies complètes.
Index de module - Documentation Ansible
Il dispose également d'un centre officiel / réseau "social" de référentiels intéressant dans lequel rechercher les politiques déjà définies par la communauté. Ansible Galaxy
Ansible est également largement utilisé et vous trouverez de nombreux projets dans github, comme celui de moi pour l’ installation de FreeRadius .
Bien qu'Ansible soit un framework open source gratuit, il possède également une interface de panneau Web payante, Ansible Tower, bien que la licence soit relativement onéreuse.
De nos jours, après l’achat de RedHat, Tower propose également la version open source AWX .
En prime, Ansible est également capable d’administrer des serveurs Windows, bien que je ne l’aie jamais utilisé pour cela.
Il est également capable d’administrer des équipements réseau (routeurs, commutateurs et pare-feu), ce qui en fait une solution très intéressante en tant que solution clé en main pour l’automatisation.
Comment installer Ansible
Rundeck
Encore une fois, pour un framework distant plus facile à utiliser, mais moins puissant que Ansible, je recommande Rundeck .
Il s’agit d’une interface graphique multi-utilisateurs / de connexion très puissante dans laquelle vous pouvez automatiser une grande partie de vos tâches quotidiennes courantes et même offrir des vues affaiblies aux systèmes d’assistance ou aux personnes du service d’assistance.
Lors de l'exécution des commandes, il vous donne également des fenêtres avec une sortie ventilée par serveur / tâche.
Il peut exécuter plusieurs tâches en arrière-plan de manière transparente et vous permet de voir le rapport et de le générer ultérieurement.
Comment installer RunDeck
Veuillez noter que des personnes utilisent Ansible + RunDeck en tant qu'interface Web. tous les cas ne sont pas appropriés pour cela.
Il va sans dire que l’utilisation de Ansible et / ou de RunDeck peut être interprétée comme une forme ou une partie de la documentation sur l’infrastructure, et qu’elle permet, au fil du temps, de reproduire et d’améliorer les actions / recettes / Playbooks.
Enfin, en ce qui concerne un serveur de commandes central, je voudrais en créer un juste pour la tâche. En réalité, le terme technique est une boîte à sauts. Les 'boîtes de saut' améliorent la sécurité, si vous les configurez correctement .
la source
Si vous voulez le faire de manière interactive, vous pouvez utiliser
terminator
ce qui permet de diffuser une commande à plusieurs terminaux.Voir: Comment exécuter la même commande linux dans plus d'un onglet / shell simultanément?
la source
tmux
et Crtl + b:set sync on
Vous pouvez également utiliser
pssh
(ouparallel-ssh
), qui est un client SSH qui se connecte à une liste d'hôtes et exécute la commande sur tous les hôtes en parallèle:la source
Peut-être que vous pouvez atteindre votre objectif avec une simple fonction zsh (bash). Supposons que vous avez des serveurs l61 l62 l63 et que vous devez souvent exécuter une commande sur eux:
Donc, dans la ligne de commande:
la source
Si vous utilisez KDE, voici une autre méthode.
- Ouvrez une fenêtre Konsole.
Pour chaque serveur avec lequel vous souhaitez communiquer:
- ouvrez un onglet
- établissez une connexion SSH avec le serveur
Dans le menu "Edition", sélectionnez "Copier l'entrée" sur "Tous les onglets".
Chaque commande que vous entrez dans cet onglet sera copiée sur tous les serveurs.
Vous pouvez passer d'un onglet à l'autre pour voir les différents résultats.
Note: mes étiquettes de menu (entre guillemets) peuvent être fausses car je n'utilise pas de version anglaise de KDE
la source
GNU parallèle
Il permet de créer des profils simples avec des paramètres enregistrés. Vous pouvez ainsi créer un profil, "prod", qui contiendra une liste de serveurs et des commutateurs communs. Il vous suffira ensuite d'ajouter la commande de votre choix, et vous serez prêt. le serveur et les supprimer automatiquement à la fin, ce qui est très pratique pour les scripts encore plus volumineux et très rapide.
Le seul problème est qu'il a tellement d'options;) Mais la documentation inclut également de nombreux exemples, vous pouvez donc les regarder au début.
la source
Je veux mentionner "Rex" ici aussi: https://www.rexify.org/
C'est un outil génial qui utilise perl + ssh (authentification utilisateur / mot de passe ou clé) et parce que perl est installé sur tous les systèmes Linux (?!), Je trouve qu'il semble plus naturel de l'utiliser (il présente certaines similitudes avec Ansible & Co.)
vous pouvez exécuter des commandes adhoc sur plusieurs serveurs à la fois (server1, server2, server ... - après avoir configuré l'authentification, ou bien utilisez les paramètres -p / -u et -s / -S pour l'exécution sudo de la commande):
ou créez un fichier dans lequel vous spécifiez différentes "tâches" et appelez-les à partir de là
Il peut être installé via des référentiels ou même avec perls cpan (ou
cpanm Rex
) et sa configuration initiale est simple, voir:- https://www.rexify.org/ ou
- https://www.rexify.org/docs/guides/ start_using__r__ex.html et
- http://www.admin-magazine.com/Archive/2014/21/First-steps-in-IT-automation-by-Rex
la source