複数のLinuxサーバーを一度に管理する

複数のLinuxサーバーを一度に管理する

いくつかの Linux ノードで構成された小さなクラスターがあります。共有 NFS があり、すべてのノードで共有 SSH キーを持つ同じユーザー アカウントがありますが、それ以外は各ノードに独自のファイル システムと構成があります。

中央ノードからすべてのノードの構成を制御できるようにしたいと考えています。一般的な構成は、主にユーザー ディレクトリと または の両方にある構成ファイルで構成されます/etc/opt場合によっては、すべてのノードに同じパッケージをインストールしたり、他のシェル コマンドを実行したりする必要もあります。

これは、エンタープライズ レベルの自動化システムやその他の複雑なインストールを正当化するほどの規模ではない小さなクラスターです。軽量でオープン ソースが望ましい、別の方法で試してテストしたことはありますか? または、直接 BASH/SSH ハックに基づいた方法はありますか? よろしくお願いします。

答え1

Saltstack を強くお勧めします。柔軟性、拡張性、軽量性、そして無料です。

http://www.saltstack.com

答え2

アンシブルLinuxまたはMac OS Xからhomebrewで制御する場合はこれで十分です。Windowsは制御マシンとしてサポートされていません。LinuxノードにはSSHとPythonが必要ですが、ほとんどのLinuxディストリビューションはデフォルトでPythonをインストールするので、おそらくすでに対応しているでしょう。必要なのはインストールマスター上で ansible を実行するのは簡単なはずです。

23分を視聴クイックスタートビデオより理解を深めるために、アドホックコマンドの紹介ドキュメントからのセクション:

  • グループ内のすべてのサーバー(この場合は atlanta)で 10 個の並列フォークでコマンドを実行します。

    $ ansible atlanta -a "/sbin/reboot" -f 10
    
  • パッケージがインストールされていることを確認しますが、更新は行いません。

    $ ansible webservers -m yum -a "name=acme state=installed"
    
  • ファイルを複数の異なるサーバーに直接転送するには:

    $ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"
    
  • すべての Web サーバーでサービスが開始されていることを確認します。

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

いくつかありますプレイブックの。

答え3

コマンドを実行するには、複数のSSHサーバーでコマンドを実行できるツールを使用できます。

いくつか例を挙げます:

  1. プシュ
  2. クラスター SSH

どちらも Debian と Ubuntu で利用可能です。

答え4

試す期待するスクリプト。複数のマシンで同じタスクの実行を自動化するのに最適な方法です。

expect スクリプトを使用すると、各マシンに手動でログインして同じタスクを何度も実行する必要がなくなります。私は、すべてのマシン上のユーザーのパスワードを変更したり、各マシンでチェック スクリプトを実行したりするのにこのスクリプトを使用しています。

関連情報