Hudson SlaveのLive USBを作る 2
続きます。
ここで、USBからブートしてSLAX上で作業します。ブートに成功するとKDEが立ち上がるはずです。
KConsoleを立ち上げて作業します。
Hudsonのアカウントを作る
swarmクラインアントを動かすアカウントを作ります。rootでもいいですがとりあえず"hudson"グループの"hudson"というアカウントを作ります。
root@slax:~# addgroup hudson root@slax:~# useradd -g hudson -d /home/hudson -s /bin/bash hudson root@slax:~# mkdir /home/hudson root@slax:~# chown hudson:hudson /home/hudson
Swarmクライアントの動作環境を作る
/home/hudsonにswarmクライアントを配置し、FSルートを作成します。
root@slax:~# su - hudson hudson@slax:~$ mkdir fsroot hudson@slax:~$ ls fsroot/ swarm-client-1.0-jar-with-dependencies.jar
Swarmクライアントを起動時に実行する
ブートしたときに自動で起動するように、/etc/rc.d/rc.localを以下のように修正します。
root@slax:~# cat /etc/rc.d/rc.local #!/bin/sh # # /etc/rc.d/rc.local: Local system initialization script. # # Put any local startup commands in here. Also, if you have # anything that needs to be run at shutdown time you can # make an /etc/rc.d/rc.local_shutdown script and put those # commands in there. USER=hudson USER_HOME=/home/${USER} CLIENT=${USER_HOME}/swarm-client-1.0-jar-with-dependencies.jar LOG=${USER_HOME}/hudson.log JAVA_HOME=/usr/lib/java # Swarm client option DESCRIPTION="SLAX Live-USB" EXECUTORS=2 FSROOT=${USER_HOME}/fsroot LABELS="Swarm" hudson_start() { if [ -e ${CLIENT} ]; then /bin/su - "${USER}" \ -c \ "${JAVA_HOME}/bin/java -jar \"${CLIENT}\" \ -description \"${DESCRIPTION}\" \ -executors \"${EXECUTORS}\" \ -fsroot \"${FSROOT}\" \ -labels \"${LABELS}\" \ > \"${LOG}\" 2>&1 &" fi } hudson_start
また、/etc/rc.d/rc.local_shutdownを編集して、shutdown時にswarmクライアントを終了しログ等を削除するようにします。
root@slax:~# cat /etc/rc.d/rc.lo rc.local rc.local_shutdown root@slax:~# cat /etc/rc.d/rc.local_shutdown #!/bin/sh # USER=hudson USER_HOME=/home/${USER} LOG=${USER_HOME}/hudson.log FSROOT=${USER_HOME}/fsroot hudson_stop() { PID=`ps ax | grep swarm-client | grep -v grep | awk '{ print $1 }'` if [ -n "${PID}" ]; then /bin/kill "${PID}" > /dev/null 2>&1 fi if [ -e "${LOG}" ]; then /bin/rm "${LOG}" > /dev/null 2>&1 fi for jar in "${FSROOT}"/maven*.jar ; do /bin/rm "${jar}" > /dev/null 2>&1 done } hudson_stop
Swarmクライアントが起動するか確認する
ここで、Swarmクライアントが動作するか確認します。
root@slax:~# /etc/rc.d/rc.local root@slax:~# ps aux | grep swarm hudson 14414 9.4 1.2 662988 25576 pts/1 Sl 19:47 0:00 /usr/lib/java/bin/java -jar /home/hudson/swarm-client-1.0-jar-with-dependencies.jar -description SLAX Live-USB -executors 2 -fsroot /home/hudson/fsroot -labels Swarm root 14465 0.0 0.0 2972 824 pts/1 S+ 19:48 0:00 grep swarm
Hudsonの画面も確認します。 Hudsonの管理 -> ノードの管理
起動していることを確認できれば終了です。 shutdownがしっかり完了するまでUSBを抜かないでください。
USBの確認
USBの内容を確認してみます。
sogabe@nanaka ~/Desktop $ cd /media/disk/ sogabe@nanaka /media/disk $ ls boot slax sogabe@nanaka /media/disk $ cd slax/ sogabe@nanaka /media/disk/slax $ ls GNU_GPL base cheatcodes.txt livecd.sgn make_iso.sh optional rootcopy tools LICENSE changes images make_iso.bat modules requirements.txt slaxsave.zip xino sogabe@nanaka /media/disk/slax $ cd changes/ sogabe@nanaka /media/disk/slax/changes $ ls dev etc home lib mnt opt root tmp usr var sogabe@nanaka /media/disk/slax/changes $ cd home/hudson sogabe@nanaka /media/disk/slax/changes/home/hudson $ ls fsroot swarm-client-1.0-jar-with-dependencies.jar
slax/changesに先ほど作成したファイルが保存されていることが分かります。何か変更が必要な場合は、slax/changesにあるファイルを編集すればいいでしょう。
SLAX的には、slax/rootcopyというディレクトリにファイルを保存しておくと、起動時に該当のディレクトリにコピーされるようです。例えば、/home/hudson/fsrootというディレクトリが必要であれば、slax/rootcopy/home/hudson/fsrootというディレクトリを作っておけばいいようです。
これで、swarmクライアントのLiveUSB化は終わりです。SLAXのおかげで非常に容易にできることがわかります。たしかに、rootでログイン済みになってしまうとかセキュリティの面では不安ではありますが、そんな危険なところでHudsonのスレーブを使うこともないでしょう。
問題は、余ってる古いマシンでUSBブートできるのかとか、情報漏洩の関係でCD-ROMやUSBを使えないことが多くなっていることでしょう。私の職場でも、CD-ROMやUSBの使用には許可が必要ですし、もう少ししたらブレードサーバを導入してリモートデスクトップのみになる予定で、USBポートそのものがなくなりそうです。ついでに、インストールするソフトも制限されるのですが...。すばらしい開発環境になりそうです。そこまで開発効率を落としたいのか、開発をやらないSIerはこんなもんなのでしょうか。単なる愚痴です。
その3に続くかも。