Résumé
- Ansible est un outil DevOps qui remplace PowerShell avec puissance
- RunDeck en tant qu'interface graphique est pratique
- Certaines personnes utilisent RunDeck+Ansible ensemble
clusterssh
Pour envoyer des commandes distantes à plusieurs serveurs, pour un débutant, je recommanderais clusterssh
Pour installer clusterssh
dans Debian :
apt-get install clusterssh
Un autre tutoriel clusterssh :
ClusterSSH est un wrapper Tk/Perl autour d'outils Linux standard comme XTerm et SSH. En tant que tel, il fonctionnera sur à peu près n'importe quel système d'exploitation 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-protocol-perl sur Debian ou Ubuntu), en plus de xterm et OpenSSH.
Ansible
En tant que 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 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 lancer une commande sur tous les serveurs, 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/serveur, et lors de son exécution en arrière-plan, elle 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 plus intéressante à mesure que vous grandissez sous Linux, et votre infrastructure devient plus grande. En tant que tel, il fera bien plus que PowerShell.
À titre d'exemple, un Playbook très simple pour mettre à niveau les serveurs 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 de nombreux modules définis qui vous permettent d'écrire facilement des politiques complètes.
Index des modules - Documentation Ansible
Il dispose également d'un hub officiel/réseau "social" intéressant de référentiels pour rechercher des politiques déjà rendues possibles par la communauté. Galaxie Ansible
Ansible est également largement utilisé, et vous trouverez de nombreux projets dans github, comme celui-ci de moi-même pour la configuration de FreeRadius.
Bien qu'Ansible soit un framework open source gratuit, il dispose également d'une interface de panneau Web payante, Ansible Tower, bien que la licence soit plutôt chère.
De nos jours, après l'achat de RedHat, tower a également la version open source connue sous le nom d'AWX.
En prime, Ansible est également capable d'administrer des serveurs Windows, même si je ne l'ai jamais utilisé pour cela.
Il est également capable d'administrer les équipements réseau (routeurs, commutateurs et pare-feu), ce qui en fait une solution très intéressante en tant que solution d'automatisation clé en main.
Comment installer Ansible
Rundeck
Encore une fois, pour un framework distant plus facile à utiliser, mais pas aussi puissant qu'Ansible, je recommande Rundeck.
Il s'agit d'une interface graphique multi-utilisateur/connexion très puissante où vous pouvez automatiser une grande partie de vos tâches quotidiennes courantes, et même donner des vues édulcorées aux sysops ou aux personnes du service d'assistance.
Lors de l'exécution des commandes, il vous donne également des fenêtres avec la 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 la sortie ultérieurement.
Comment installer RunDeck
Veuillez noter que certaines personnes utilisent Ansible+RunDeck en tant qu'interface Web ; tous les cas ne sont pas appropriés pour cela.
Il va également sans dire que l'utilisation d'Ansible et/ou de RunDeck peut être interprétée comme une forme ou une partie de la documentation de l'infrastructure, et au fil du temps permet de répliquer et d'améliorer les actions/recettes/Playbooks.
Enfin, en parlant d'un serveur de commande central, j'en créerais un juste pour la tâche. En fait, le terme technique est une boîte de saut. Les "jump boxes" améliorent la sécurité, si vous les configurez correctement.
Si vous voulez le faire de manière interactive, vous pouvez utiliser terminator
qui permet de diffuser une commande vers plusieurs terminaux.
Voir :Comment exécuter la même commande linux dans plusieurs onglets/shell simultanément ?
Vous pouvez également utiliser pssh
(ou parallel-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 :
$ 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