2009-06-30 13 views
1

実験用のJavaアプリケーションの実行に使用される一連のMacマシン(主にPPC)があります。アプリケーションは、多数のjarファイルを含むフォルダ、いくつかのドキュメント、およびいくつかのシェルスクリプトで構成されています。複数のMacへのファイルの自動展開

新しいバージョンの実験を1台のLinuxサーバー上のディレクトリにプッシュして、Macにバージョンの更新を指示したり、まだ新しい実験全体を取得しないように指示することができますそれ。

../deployment/ 
../deployment/experiment1/ 
../deployment/experiment2/ 

ので、私は、更新プロセスを自動化する方法を考え出すしたいと思います。 Macは常にオンになっているわけではなく、DHCPによってIPアドレスが割り当てられているため、ドメイン名を持つサーバは直接そのサーバに接続できません。 Macでフルタイムで動作する何らかのデーモンが必要であると思って、「実験が更新されましたか」のアナウンスが設定されているかどうかを確認するために、毎分サーバーにpingを実行します。

これを効率的に管理する方法について考えてもらえますか?ソリューションには、既存のMacアプリケーションや、書くことができるシェルスクリプトが含まれています。

答えて

1

単純なSubversionの設定では、ある程度成功するかもしれません。 Macのファームに開発ツールがある場合、Subversionは既にインストールされています。

あなたのスクリプトは、デプロイメントディレクトリにsvn upという名前で実行し、マシンからSubversionサーバーへの変更を頻繁にチェックするのと同じくらい簡単です。サーバー上で特別な設定をせずにこれを行うことができます。

バージョン管理システムのバージョン管理システムがあまりにも重いように見える場合、このための従来のUnixツールはrsyncと呼ばれ、its websiteに関する多くの情報があります。


おそらく、ポーリングに関係しない解決策を探していることでしょう。その場合は、各Macで動作し、ローカルネットワークのBonjourサービスを登録するプロセスを持つことができます。 DNS-SDライブラリはおそらくあなたの言語で利用可能ですが、この場合はアクティブなマシンのリストを取得するのはかなり簡単です。私はSSHを実行しているローカルマシンを見つけるために、Rubyでこのスクリプトを書いた:

#!/usr/bin/env ruby 

require 'rubygems' 
require 'dnssd' 

handle = DNSSD.browse('_ssh._tcp') do |reply| 
    puts "#{reply.name}.#{reply.domain}" 
end 

sleep 1 
handle.stop 
+0

これは潜在的な解決策です(私たちはソースコード管理のためにSubversionを使用しています)。しかし、理想的には、これを実行するためには、すべてのクライアントマシンに物理的に移動する必要はありません。集中化された方法が望ましいでしょう。 – kpozin

+1

なぜすべてのクライアントマシンに行かなければならないのですか? launchdやcronから数分ごとに実行されるすべてのマシンにスクリプトを用意し、Subversionのアップデートを行います。 –

0

することができますuse AppleScript remotelyあなたのクライアントマシン上のturn on Remote Events場合。たとえば、control programs like iTunes remotelyとすることができます。

リモートマシン(AppleScriptなど)にアップデートスクリプトを置き、リモートAppleScriptを使用して必要に応じてアップデートスクリプトを起動することをお勧めします。

頻繁に更新すると、ジムパルスのアイデアは素晴らしいものです。マシンがアップデートの検索を開始するときに直接制御できる場合は、リモートAppleScriptが私が考えることができる最も簡単な解決策です。

関連する問題