概要
- 前回の補足
- 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 スクリプトの書き方を知らなかった自分が恥ずかしい...