![So stellen Sie Programme auf mehreren Computern bereit](https://rvso.com/image/50576/So%20stellen%20Sie%20Programme%20auf%20mehreren%20Computern%20bereit%20.png)
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:
Installieren
sshpass
auf Ihrem lokalen Computer:sudo apt-get install sshpass
Dadurch können Sie das Kennwort als Befehlszeilenargument übergeben:
sshpass -p '<password>' ssh user@server
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).
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
sshpass
Ihre 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
Nachdem Sie nun den passwortlosen Zugriff eingerichtet haben, installieren Sie Ihre Software auf jedem Computer (dies setzt voraus, dass dieser
$user
ausgeführt werden kannapt-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:
- Marionette
- Koch
- cfengine3
Für kurzfristige Ziele
apt-get
Wenn 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 expect
ein Tool oder paramiko
Modul in Python verwenden.