スレーブ・エージェントとは、どのようなものなのでしょうか?

1,882 views
Skip to first unread message

八文字健太郎

unread,
Apr 13, 2012, 3:54:44 PM4/13/12
to jenkin...@googlegroups.com
共有の開発機(HP-UX)のため、自由にソフトウェアをインストールする事ができません。
jenkinsからその開発機でのコンパイルを実行したいのですが、「SSH経由でUnixマシンのスレーブ・エージェントを起動」を選択した場合、
その開発機にスレーブ・エージェントが自動でインストールされてしまいます。

そこで、質問があります。
①jenkinsから他のマシンに対してジョブをリモートで実行させたい場合、必ずリモート先のマシンには、スレーブ・エージェントをインストールするしかないのでしょうか?
スレーブ・エージェントは、常にリモート先のマシンでデーモンのように常駐しているものなのでしょうか?それとも、ジョブが実行されるときだけ、起動されるものなのでしょうか?

以上、ご教授お願い致します。

Akiko Takano

unread,
Apr 13, 2012, 5:56:38 PM4/13/12
to jenkin...@googlegroups.com
八文字さま、みなさま、おはようございます。

スレーブは良く使っているので、自分の確認のため返信させていただきます。
----

> jenkinsから他のマシンに対してジョブをリモートで実行させたい場合、必ずリモート先のマシンには、スレーブ・エージェントをインストールするしかないのでしょうか?

(1) マスタ・スレーブ構成の場合は、スレーブ側にJenkinsマスタとのやりとりを行うためのjarファイルが必要になります。
スレーブエージェントは、javaのプログラムなので、さらにスレーブ側にjavaの実行環境も必要です。

(2) ただ、『他のマシンに対してジョブをリモートで実行させたい場合』という意味では、マスタ・スレーブ構成を取らなくても実行できます。

この場合は、「マスタ」ノードのジョブとして、リモートサーバに実行させたいコマンドを、SSHを介して実行させる、という形になります。

exp.
%master ssh ho...@slave.server ls -l

実際に、私の環境でも、Javaをはじめソフトを自由にインストールできないサーバに対しては、この方法を取ります。

(1)と(2)では、Workspaceがどこにできるかというのも大きく違います。
実行させるコマンドがすくなく、ロギングがきちんとできれば良いのであれば、(2)の方法もあるかと思います。(検討済みでしたらごめんなさい)

==================

> スレーブ・エージェントは、常にリモート先のマシンでデーモンのように常駐しているものなのでしょうか?それとも、ジョブが実行されるときだけ、起動されるものなのでしょうか?

スレーブエージェントは、プルダウンでの選択に書いてあるとおり、いろんなパターンが取れます。

『SSH経由でUnixマシンのスレーブ・エージェントを起動』であれば、マスタがスレーブに対して仕事をさせたいときに、下記の手順でスレーブを起動させます。

---
1. sshコマンドでスレーブ(リモートサーバ)に、jarファイルを転送。
2. sshコマンドでスレーブ(リモートサーバ)上の、jarファイルを実行。
 (ここまでの操作h、マスタがスレーブに対してエージェント上げてね!という作業)

3. リモートサーバのjava jenkins-slave.jar が起動し、こんどはスレーブ側からマスタにつな
ぎ、マスタからの命令を待ちうける状態になる。
---

3のあと、これもスレーブノードの設定で『すぐに切る』『そのまま通信を継続させておく』といった選択ができます。
用がおわったらすぐに接続を切った後、スレーブの出番が来たら、再度1~3の手順でエージェントを起動しなおします。

起動し直すと、それだけすこし時間がかかります。

コマンドの実行のタイミングに精確さを要求するなら、

a. 一旦エージェントが起動したら、『通信をそのままにしておく』
b. スレーブ起動のコマンドを、リモートサーバ(スレーブ側)のinitファイルに設定して、サービスとして上げておく

という方法があります。

#絵があれば判りやすいかもしれません。。。すみません。

認識間違いや、今はもっと凄い(便利な) ことになっているよ、という情報があれば、みなさまご指摘下さい。


2012年4月14日4:54 八文字健太郎 <yatsu...@gmail.com>:


> 共有の開発機(HP-UX)のため、自由にソフトウェアをインストールする事ができません。
> jenkinsからその開発機でのコンパイルを実行したいのですが、「SSH経由でUnixマシンのスレーブ・エージェントを起動」を選択した場合、
> その開発機にスレーブ・エージェントが自動でインストールされてしまいます。
>
> そこで、質問があります。

末広 尚義 / H Suehiro

unread,
Apr 14, 2012, 2:51:35 PM4/14/12
to jenkin...@googlegroups.com
末広です

手短に
1、インストールについて
必須ではありません。ただ、インストールしてある方が起動しなくていいので楽なのと
環境によってインストールできる物に制限がある場合があります。

インストールしない場合はノードの設定の「起動方法」で「JLNP経由での起動」を選択して
「リモートFSルート」をスレーブコマンドを実行するユーザーで書き込みができる場所を指定する必要があります。

その後、
javaws http://(サーバーアドレス):8080/computer/(ノード名)/slave-agent.jnlp
もしくは
java -jar slave.jar -jnlpUrl
http://(サーバーアドレス):8080/computer/(ノード名)/slave-agent.jnlp
のコマンドをスレーブにするマシンから実行すればいいです。

2、どちらでも可能ですがジョブの実行時のみ動作させる場合マスタから起動できる必要があるのでJLNPではできないと思いますがよく分かりません。

参考になるかわかりませんがよろしくお願いします。

2012年4月14日6:56 Akiko Takano <akiko...@gmail.com>:

--
- 末広 尚義
- twitter @bols_blue
- mail bols...@lnc.jp
- blog http://d.hatena.ne.jp/bols-blue/

八文字健太郎

unread,
Apr 16, 2012, 11:09:40 AM4/16/12
to jenkin...@googlegroups.com
takano様 末広様

こんばんは、早速のご回答ありがとうございます。

スレーブ・エージェントとは、単なるjavaのプログラムなんですね。
私は、インストール的な事(var配下などにいろんなファイルやプログラムがコピーされてしまう)が勝手にされてしまうのかと思っていました。

今日、開発環境を確認したところ、JREとsshは既にインストール済みでした。
それなら、マスタースレーブ構成にしても、slave.jarが指定のパスにコピーされるだけで、特に環境的には、何も影響を与えないと
思っています。また、スレーブノードの設定で『すぐに切る』にしておけば、特に常駐するわけでもないのですね。

slave.jar を開発環境に置くことが、いけないのかは確認してみますが、皆様のお話を聞かせて頂いた限りでは、CやproCで作成したツールと
何ら変わらないような気がします。



2012年4月14日土曜日 6時56分38秒 UTC+9 Akiko Takano:
Reply all
Reply to author
Forward
0 new messages