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:
Mon expérience de Windows:
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.
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é:
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.
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.
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