Gérer quelques serveurs Linux à la fois

J'ai un petit cluster qui se compose de quelques nœuds Linux. Il existe un NFS partagé, et j'ai le même compte d'utilisateur avec des clés SSH partagées sur tous les nœuds, mais à part cela, chaque nœud possède son propre système de fichiers et sa configuration.

Je veux pouvoir contrôler la configuration de tous les nœuds à partir d'un noeud central. Une configuration typique consiste principalement en fichiers de configuration, à la fois dans le répertoire utilisateur et dans /etc ou /opt . Parfois, j'ai également besoin d'installer les mêmes paquets sur tous les nœuds ou d'exécuter d'autres commandes shell.

Il s'agit d'un petit cluster qui ne justifie guère les systèmes d'automatisation au niveau de l'entreprise ni d'autres installations complexes. Existe-t-il une manière différente que vous avez testée, de préférence légère et open-source? Ou même basé sur les hacks BASH / SSH directement? Merci.

Ansible devrait faire le truc si vous les contrôlez à partir de Linux ou Mac OS X avec homebrew. Windows n'est pas pris en charge pour la machine de contrôle. Les nœuds Linux doivent avoir SSH et Python, mais comme la plupart des distributions Linux installent Python par défaut, vous êtes probablement déjà couvert. Tout ce que vous aurez à faire est d' installer ansible sur le maître, ce qui devrait être facile.

Regardez la vidéo de démarrage rapide de 23 minutes pour avoir une meilleure idée. Je recommande également d'examiner la section Introduction aux commandes Ad-Hoc de la documentation:

  • Exécutez la commande sur tous les serveurs d'un groupe, dans ce cas, atlanta, dans 10 fourchettes parallèles:

     $ ansible atlanta -a "/sbin/reboot" -f 10 
  • Assurez-vous qu'un paquet est installé, mais ne le mettez pas à jour:

     $ ansible webservers -m yum -a "name=acme state=installed" 
  • Pour transférer un fichier directement sur plusieurs serveurs différents:

     $ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts" 
  • Assurez-vous qu'un service est lancé sur tous les serveurs Web:

     $ ansible webservers -m service -a "name=httpd state=started" 

Il y a aussi quelques exemples de manuels scolaires.

Je vous recommande vivement Saltstack. C'est flexible, évolutif, léger et gratuit.

http://www.saltstack.com

Pour exécuter des commandes, vous pouvez utiliser un outil qui peut exécuter une commande sur plusieurs serveurs SSH

Certains d'entre eux sont:

  1. Pssh
  2. Cluster SSH

Les deux sont disponibles dans Debian et Ubuntu.

Essayez les scripts d' attente . Ils sont un excellent moyen d'automatiser l'exécution des mêmes tâches sur plusieurs machines.

Avec les scripts attendus, vous ne devrez pas vous connecter manuellement dans chaque machine et effectuer la même tâche encore et encore. J'utilise pour des choses comme changer les mots de passe d'un utilisateur sur toutes les machines, exécuter des scripts de vérification sur chaque machine, etc.