複数のコンピュータにプログラムを配布する方法

複数のコンピュータにプログラムを配布する方法

約40台のKubuntu 13.04マシンにいくつかのプログラムをインストールする必要があります。

編集:リポジトリを設定しましたが、コンピュータはLDAP認証または集中型サーバーなしですべて同じレプリカです。

答え1

すべての構成管理ソフトウェアが可能です。それがまさにそれであることです。 Chefを見ることをお勧めします。 Webページの広告テキストは次のとおりです。

Chef はインフラストラクチャをコードに切り替える自動化プラットフォームです。物理サーバーと仮想サーバーについて考えないでください。 Chefを使用すると、これらのサーバーとサーバーが提供するサービスに命を吹き込むコードが実際の資産になります。自動化されたインフラストラクチャは、リリース期間を短縮し、規模と複雑さを管理し、システムを保護するのに役立ちます。

ネットワークがクラ​​ウド、オンプレミス、またはハイブリッドネットワークにある場合でも、Chefは5台、5000台、500,000台のサーバーを管理しているかどうかにかかわらず、サーバーとアプリケーションを構成、展開、および拡張する方法を自動化できます。 FacebookやAmazonなどの企業がミッションクリティカルな課題を解決するためにChefを選択することは驚くべきことではありません。

このビデオは多くの役に立ちます: http://www.youtube.com/watch?v=0UXh5EnFZrM

ホームページ: http://www.opscode.com/chef/

答え2

Rahulの非常に良い回答を拡張するために、次の方法を使用して各コンピュータへのパスワードなしのアクセスを簡単に設定できます。

  1. インストールするsshpassローカルコンピュータから:

    sudo apt-get install sshpass
    

    これにより、パスワードをコマンドライン引数として渡すことができます。

     sshpass -p '<password>' ssh user@server
    
  2. SSHキーの生成

    ssh-keygen -t rsa
    

    空のパスワードを許可することで作業を簡素化できます(この回答の残りの部分ではすでにこれを行っていると仮定します。セキュリティ上の問題によりこれを禁止する場合は、お知らせください。それに応じて修正します)。

  3. 関心のあるすべてのIPとそのユーザー名とパスワードを1行に1つずつ含むファイルを作成します。

    1.2.3.4 bob bobs_password
    11.22.33.44 hary harrys_password 
    

    次に、sshpass次のようにキーファイルをコピーします。

    while read ip user pass; do 
      sshpass -p "$pass" ssh ssh-copy-id -i ~/.ssh/id_rsa.pub $user@$ip;
    done < ips.txt
    
  4. パスワードなしのアクセスが確立されているので、各コンピュータにソフトウェアをインストールしてください(デフォルトでは$user機能していると仮定)。apt-get$userroot

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

答え3

長期的な目標のために

ネットワーク上で実行されるさまざまな*nixバージョンを一元管理し、構成のあらゆる側面を管理する自動化されたツールが必要な場合は、次の点を確認してください。

  1. 人形
  2. シェフ
  3. cfエンジン3

短期的な目標のために

apt-getパッケージを配布またはインストールするための一時的なソリューションが必要な場合は、yumシェルまたはPerl、Pythonスクリプトを使用できます。

すでにパスワードのない認証を設定している場合は、次のスクリプトを使用できます。

#!/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

パスワードのない認証がない場合は、expectPythonのツールまたはモジュールを使用できます。paramiko

関連情報