あなたの質問の言い回しから、私はあなたが2つのファイルを更新するローカルマシンとリモートマシンを持っていると仮定します-PythonスクリプトとBashスクリプトです。どちらのファイルもSVNの制御下にあり、両方のマシンが同じSVNサーバーにアクセスできます。
グリッドシステムに固有のアドバイスはありませんが、導入に重要であるとわかった一般的なポイントをいくつか挙げさせてください。
本番環境の変更を構成の変更に限定します。「サーバー上のデータセットのパスを使用する」必要があると書いています。これは、Pythonスクリプトにパスがハードコードされているように聞こえます。スクリプトを移動する他のすべてのマシンでこれらのパスを変更する必要があるため、これは良いアイデアではありません。これらの変更をSVNにコミットすると、ローカルマシンにリモートパスがあり、オンとオンが繰り返されます(パスだけでなくパスワードもある場合はどうなりますか?SVNに本番パスワードを設定しないでください)サーバ。)
したがって、パスやその他のセットアップ情報を.ini
ファイルに保存し、ConfigParserを使用してそれを読み取るか、.json
ファイルを使用してjsonモジュールを使用します。ファイルのコピーをローカルとリモートの両方に同じパスで両方ともSVN制御なしで保持し、Pythonスクリプトでその構成ファイルへのパスを保持する(または両方を保持できない場合はコマンドラインから取得する)同じパスでの構成)。
構成はできるだけ小さくしてください。どの構成もアプリケーションの「可動部分」であり、どのシステムも可動部分が少ないほど堅牢です。構成に含まれるものの良い指標は、コードを移動するたびに編集する必要があるということです。編集を必要としないものは、定数としてコードに残すことができます。
導入を自動化します。ローカルマシンでBashスクリプトを使用して実行できます。を介してリモートマシン上で任意のコマンドを実行できることに注意してくださいssh
。例えば:
svn export yourprojectpath /tmp/exportedproject
tar czf /tmp/yourproject.tgz /tmp/exportedproject
scp /tmp/myproject.tgz youruser@remotemachine:~/dev
## Remote commands are in the right hand side, between ''
ssh youruser@remotemachine 'tar xzf ~/dev/yourproject.tgz'
ssh youruser@remotemachine 'qsub ~/dev/yourproject/script.py'
これが機能するためには、もちろん、ローカルマシンとリモートマシンの間に設定された、公開鍵/秘密鍵に基づくパスワードなしのログインが必要です。
これ以上必要な場合は、Pythonのファブリックまたはより高度な料理を使用することを考えることができます。