Linux équivalent à la technologie "one-to-many" de PowerShell

Venant de l'administration de Windows, je veux approfondir dans Linux (Debian). Une de mes questions brûlantes que je ne pouvais pas répondre à la search sur le Web (je ne l'ai pas trouvé) est la suivante: comment puis-je get le soi-disant "un-à-plusieurs" à distance comme dans PowerShell pour Windows?

Pour le décomposer, je dirais:

Mon sharepoint vue sur Linux:

  • Je peux ssh dans un server et tapez ma command
  • J'obtiens le résultat. Pour un environnement de 10 servers je devrais écrire un script (perl / python?) En envoyant la command pour chacun d'eux?

Mon expérience de Windows:

  1. Je tape ma command et avec "invoke-command" je peux "envoyer" à un tas de servers (peut-être à partir d'un file text) pour les exécuter simultanément et récupérer le résultat.

  2. Je peux même établir plusieurs sessions, la connection est tenue en arrière-plan, et envoyer sélectivement des commands à ces sessions, et à distance comme je l'ai besoin.

(J'ai entendu parler de chef, marionnette, etc. Est-ce quelque chose comme ça?)

Update: Je vais aller pour cssh ou pssh ou dsh en premier et ensuite jeter un oeil à Ansible. ( En outre, j'espère find ) comment tmux fait ce parallélisme à distance comme 'terminator'. Merci @jlliagre pour avoir signalé la même question avec plus d'idées: Comment puis-je exécuter la même command linux dans plus d'un onglet / shell simultanément?

tmux:: setw synchronise-les volets sur

Update: pour plus de juste des commands adhoc (bien que ce soit possible aussi), je suggère Rex (voir mon commentaire ci-dessous) – configuration facile et l'utilisation (si vous connaissez perl c'est encore mieux)

Résumé:

  • Ansible est un outil de devops qui est un puissant rlocation de PowerShell
  • RunDeck en tant qu'interface graphique est pratique
  • Certaines personnes courent RunDeck + Ansible set

Pour envoyer des commands à distance à plusieurs servers, pour un débutant, je reorderais clusterssh

Pour installer clusterssh dans Debian:

 apt-get install clusterssh 

Un autre tutoriel clusterssh :

ClusterSSH est un wrapper Tk / Perl autour des outils Linux standards comme XTerm et SSH. En tant que tel, il fonctionnera sur n'importe quel operating system compatible POSIX où les bibliothèques existent – je l'ai exécuté sur Linux, Solaris et Mac OS X. Il nécessite les bibliothèques Perl Tk (perl-tk sur Debian ou Ubuntu) et X11 :: Protocol (libx11-protocole-perl sur Debian ou Ubuntu), en plus de xterm et OpenSSH.

Comme pour un framework distant pour l'administration de plusieurs systèmes, Ansible est une alternative très intéressante à Puppet. Il est plus léger et n'a pas besoin 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 de command line.

Cependant, pour commencer à utiliser Ansible, vous avez besoin d'une installation simple et d'installer le file text de la list des clients. Ensuite, pour exécuter une command sur tous les servers, c'est aussi simple que de faire:

 ansible all -m command -a "uptime" 

La sortie est également très bien formatée et séparée par règle / server, et lors de son exécution en arrière-plan, elle peut être redirigée vers un file et consultée ultérieurement.

Vous pouvez commencer avec des règles simples, et l'utilisation d'Ansible deviendra plus intéressante à mesure que vous évoluerez sous Linux, et votre infrastructure deviendra plus grande. En tant que tel, il fera beaucoup plus que PowerShell.

A titre d'exemple, un Playbook très simple pour mettre à jour les servers Linux que j'ai écrit:

 --- - hosts: all become: yes gather_facts: False tasks: - name: updates a server apt: update_cache=yes - name: upgrade a server apt: upgrade=full 

Il a également beaucoup de modules définis qui vous permettent d'écrire facilement des politiques complètes.

Index du module – Ansible Documentation

Il dispose également d'un hub / réseau social de référentiels intéressant pour searchr des politiques déjà réalisables par la communauté. Ansible Galaxy

Ansible est également largement utilisé, et vous findez beaucoup de projets en github, comme celui-ci de moi-même pour l' installation de FreeRadius .

Alors qu'Ansible est un framework open source gratuit, il a aussi une interface web payante, Ansible Tower bien que la licence soit plutôt chère.

En prime, Ansible est également capable d'administrer les servers Windows, même si je ne l'ai 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 key en main d'automation.

Comment installer Ansible

Encore une fois, pour un cadre distant plus facile à utiliser, mais pas aussi puissant que Ansible, je recommand Rundeck . Il s'agit d'une interface graphique multi-user / connection très puissante où vous pouvez automatiser une grande partie de vos tâches quotidiennes courantes et même donner des vues époustouflantes aux sysops ou aux helpdesk.

Lors de l'exécution des commands, il vous donne également des windows dont la sortie est décomposée par server / tâche. Il peut exécuter plusieurs tâches en arrière-plan de façon transparente et vous permet de voir le rapport et de le produire plus tard.

image rundeck

Comment installer RunDeck

S'il vous plaît noter qu'il y a des personnes qui courent Ansible + RunDeck comme une interface web; tous les cas ne sont pas appropriés pour cela.

Il va sans dire que l'utilisation d'Ansible et / ou RunDeck peut être interprétée comme une forme ou une partie de la documentation d'infrastructure, et au fil du time permet de reproduire et d'améliorer les actions / recettes / Playbooks.

Enfin, vous parlez d'un server de command central, je voudrais en créer un juste pour la tâche. En fait, le terme technique est une boîte de saut. Les 'Jump boxes' améliorent la security, si vous les configurez correctement .

Si vous voulez le faire de façon interactive, vous pouvez utiliser terminator qui permet de diffuser une command à plusieurs terminaux.

entrer la description de l'image ici

Voir: Comment exécuter la même command linux dans plus d'un onglet / shell simultanément?

Vous pouvez également utiliser pssh (ou parallel-ssh ), qui est un client SSH qui se connecte à une list d'hôtes et exécute la command sur tous les hôtes en parallèle:

 $ parallel-ssh -i -H "host1 host2" uname -a [1] 11:37:12 [SUCCESS] host2 Linux host2 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [2] 11:37:12 [SUCCESS] host1 Linux host1 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 

Peut-être que vous pouvez atteindre votre objective avec une simple fonction zsh (bash). Disons que vous avez des servers l61 l62 l63 et vous avez souvent besoin d'exécuter une command sur eux:

 function run_on_cluster() { (for srv in l61 l62 l63; do echo "ssh $srv $1"; done) | parallel --gnu } 

Donc, dans la command line:

 $ run_on_cluster "uname -r" 2.6.32-279.el6.x86_64 2.6.32-279.el6.x86_64 2.6.32-504.23.4.el6.x86_64 

Si vous utilisez KDE, voici une autre méthode.
– Ouvre une window Konsole.
Pour chaque server avec lequel vous souhaitez communiquer:
– ouvrir un onglet
– établir une connection ssh avec le server
Dans le menu "Edition", select "copyr l'input" sur "tous les tabs"

Chaque command que vous entrez dans cet onglet sera copiée sur tous les servers.
Vous pouvez passer de l'onglet à l'onglet pour regarder les différents résultats.

Note: mes labels de menu (entre guillemets) peuvent être erronées puisque je n'utilise pas une version anglaise de KDE

GNU parallèle

Il permet de créer des profils simples avec des parameters sauvegardés, de sorte que vous pouvez créer un profil, "prod", qui contiendra une list de servers et des commutateurs communs. le server et les supprimer automatiquement à la fin, et c'est très pratique pour les scripts plus gros.

Le seul problème est qu'il y a tellement d'options;) Mais la documentation inclut aussi beaucoup d'exemples, donc vous pouvez les regarder au début.

Je veux mentionner "Rex" ici aussi: https://www.rexify.org/

C'est un outil génial qui utilise perl + ssh (user / mot de passe ou authentification par key) et parce que perl est installé sur tous les systèmes Linux (?!), Je pense qu'il semble plus naturel d'utiliser (il a quelques similitudes avec Ansible & Co.)

vous pouvez exécuter des commands adhoc sur plusieurs servers à la fois (server1, server2, server … – après avoir configuré l'authentification, ou bien utiliser les parameters -p / -u et -s / -S pour l'exécution de la command sudo):

 $ rex -H "server[1..3]" -e "say run 'uptime'" 

ou créer un file où vous spécifiez différentes "tâches" et les appeler à partir de là

 $ rex -f myConfigFile.rex uptime 

Il peut être installé via des référentiels ou même avec perls cpan (ou cpanm Rex ) et sa configuration initiale est facile, 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