So stellen Sie Programme auf mehreren Computern bereit

So stellen Sie Programme auf mehreren Computern bereit

Ich muss einige Programme auf etwa 40 Kubuntu 13.04-Rechnern installieren und möchte wissen, welche Möglichkeiten ich habe, dies so effizient wie möglich zu tun.

BEARBEITEN: Ich habe die Repositories bereits eingerichtet und die Maschinen sind alle identische Klone ohne LDAP-Authentifizierung oder zentralen Server.

Antwort1

Jede Konfigurationsmanagement-Software ist geeignet, dafür sind sie da. Ich würde vorschlagen, sich Chef anzuschauen. Hier ist der Klappentext von ihrer Webseite:

Chef ist eine Automatisierungsplattform, die Infrastruktur in Code umwandelt. Denken Sie nicht mehr in physischen und virtuellen Servern. Mit Chef ist Ihr wahres Kapital der Code, der diese Server und die von ihnen bereitgestellten Dienste zum Leben erweckt. Eine automatisierte Infrastruktur kann Ihre Markteinführungszeit verkürzen, Ihnen helfen, Umfang und Komplexität zu verwalten und Ihre Systeme zu schützen.

Egal, ob Ihr Netzwerk in der Cloud, vor Ort oder hybrid ist – Chef kann die Konfiguration, Bereitstellung und Skalierung Ihrer Server und Anwendungen automatisieren, egal ob Sie 5, 5.000 oder 500.000 Server verwalten. Es ist kein Wunder, dass Chef von Unternehmen wie Facebook und Amazon für unternehmenskritische Herausforderungen ausgewählt wurde.

Dieses Video wird Ihnen sehr helfen: http://www.youtube.com/watch?v=0UXh5EnFZrM

Startseite: http://www.opscode.com/chef/

Antwort2

Um Rahuls sehr gute Antwort noch zu ergänzen: Mit diesem Ansatz können Sie ganz einfach einen passwortlosen Zugriff auf alle Maschinen einrichten:

  1. Installierensshpassauf Ihrem lokalen Computer:

    sudo apt-get install sshpass
    

    Dadurch können Sie das Kennwort als Befehlszeilenargument übergeben:

     sshpass -p '<password>' ssh user@server
    
  2. Erstellen Sie einen SSH-Schlüssel

    ssh-keygen -t rsa
    

    Sie können die Dinge vereinfachen, indem Sie eine leere Passphrase zulassen (im Rest dieser Antwort wird davon ausgegangen, dass Sie dies getan haben. Lassen Sie mich wissen, ob Ihre Sicherheitsbedenken dies verbieten, und ich werde es entsprechend ändern).

  3. Erstellen Sie eine Datei mit allen IPs, die Sie interessieren, und den entsprechenden Benutzernamen und Passwörtern, jeweils eines pro Zeile:

    1.2.3.4 bob bobs_password
    11.22.33.44 hary harrys_password 
    

    Kopieren Sie nun sshpassIhre Schlüsseldateien und erlauben Sie – sofern Sie eine leere Passphrase verwendet haben – den passwortlosen Zugriff auf alle Rechner:

    while read ip user pass; do 
      sshpass -p "$pass" ssh ssh-copy-id -i ~/.ssh/id_rsa.pub $user@$ip;
    done < ips.txt
    
  4. Nachdem Sie nun den passwortlosen Zugriff eingerichtet haben, installieren Sie Ihre Software auf jedem Computer (dies setzt voraus, dass dieser $userausgeführt werden kann apt-get, im Wesentlichen also $user) root:

     while read ip user pass; do 
       ssh $user@$ip "apt-get install package; 
     done < ips.txt
    

Antwort3

Für ein langfristiges Ziel

Wenn Sie ein Automatisierungstool möchten, mit dem Sie die Verwaltung der verschiedenen *nix-Varianten, die in Ihrem Netzwerk ausgeführt werden, zentralisieren und jeden möglichen Aspekt der Konfiguration verwalten können, dann sehen Sie sich Folgendes an:

  1. Marionette
  2. Koch
  3. cfengine3

Für kurzfristige Ziele

apt-getWenn Sie eine temporäre Lösung wünschen, um nur einige Pakete über oder zu installieren yum, können Sie Shell- oder Perl- bzw. Python-Skripte verwenden.

Wenn Sie bereits eine kennwortlose Authentifizierung eingerichtet haben, können Sie einfach das folgende Skript verwenden:

#!/usr/bin/env bash

Servers_list=/opt/servers_list
PackageName="package-name"

for Host in $(< $Servers_list )
do
    echo "Installing package on $Host"
    ssh "${Host}"  apt-get -y install "${PackageName}"

done

Wenn Sie keine passwortlose Authentifizierung haben, können Sie expectein Tool oder paramikoModul in Python verwenden.

verwandte Informationen