複数のマシンにプログラムを展開する方法

複数のマシンにプログラムを展開する方法

約 40 台の Kubuntu 13.04 マシンにいくつかのプログラムをインストールする必要があり、それをできるだけ効率的に行うためのオプションを知りたいです。

編集: リポジトリはすでに設定されており、マシンはすべて同一のクローンであり、LDAP 認証や集中サーバーはありません。

答え1

どのような構成管理ソフトウェアでも構いません。それがそれらの目的です。chef を検討することをお勧めします。以下は、Web ページからの宣伝文句です。

Chef は、インフラストラクチャをコードに変換する自動化プラットフォームです。物理サーバーと仮想サーバーという観点で考えるのはやめましょう。Chef を使用すると、サーバーとそれらが提供するサービスを実現するコードが真の資産になります。自動化されたインフラストラクチャにより、市場投入までの時間が短縮され、規模と複雑さを管理し、システムを保護できます。

ネットワークがクラ​​ウド、オンサイト、ハイブリッドのいずれであっても、Chef は、5 台のサーバー、5,000 台のサーバー、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。基本的には、$userですroot)。

     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

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

関連情報