概要
- 前回の補足
- xensever-automator について(ハマった点)
前回の補足
実装
実装の内容を図面で起こしてみた。

上記の通り、XenServer を中心として Dom0 の XenStore から IP アドレス等の情報を取得してサーバーに設定した上で chef server との通信の後で設定が開始する実装。
稼働メッセージ
XenStore を利用することで knife xenserver create vm の起動メッセージに変化があった。
Connecting to XenServer host ${XenServer IP}...
Creating VM hogehoge...
Using template ${your_template} [uuid: ${template_uuid}]...
Adding attributes to xenstore... # ← ここが追加になった
VM Name: xxxxxxx
VM Memory: 512 MB
Waiting server...
Trying to SSH to ${VM IP}...
xensever-automator について(ハマってる点)
xensever-automator を検証していてところハマってしまった点を紹介。
xe-automater.conf
xe-automater.conf を /etc/init/ 以下に設置しなければいけないようだが、対象となる環境(Debian)には初期状態では /etc/init ディレクトリがそもそも無かった...
そもそも /etc/init/ とは /etc/init.d と対を成すものらしく、利用するには upstart コマンドが必要となり現状の環境には適用出来ない。ということで、無理くり /etc/init.d/ 以下に置くようなコマンドを自作してみた。
#!/bin/sh ### BEGIN INIT INFO # Provides: xenserver-automater # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Required-Start: # Required-Stop: # Description: XenServer Guest Configuration Automator ### END INIT INFO NAME=xenserver-automater USER=root DESC="XenServer Guest Configuration Automator" case "$1" in start ) echo -n "Starting $DESC: " /usr/sbin/xe-set-network /usr/sbin/xe-set-hostname ;; esac
上記のシェルを作成し /etc/init.d 以下に xe-automater というファイル名で設置する。設置後、sudo update-rc.d xe-automator defaults にて起動スクリプトとして登録。
この状態で再起動時 xe-automater が実行されて IP アドレスが仮想ホストに設定されるという算段でいたが IP アドレスが正常に設定されない事象が発生している。
原因として考えられるのが...
xe-automaterが実行されるより前に Xen 関連のサービスが起動する必要がある?- そもそもスクリプトがヘタレである
xe-automater を手動で cd /etc/init.d && sudo ./xe-automater start として実行すると正常に IP が設定されることからスクリプトがヘタレである点と合わせて OS 起動時に Xen 関連のサービスが起動している必要がありそうだ。
まとめ
- Chef の話というよりも XenServer の話になってきているが引き続き調査していく
- そもそも init スクリプトの書き方を知らなかった自分が恥ずかしい...