OpenStack ユーザ会の皆様
お世話になっております。NTT ATの沈です。自己レスです。インストールプログラム
(
nova-CC-install-v1.1.sh)がインストール作業時に生成したログファイル
(/var/log/nova/nova-install.log)の内容を再度確認したら、
/usr/bin/python /usr/bin/nova-manage network create $PROJECT_CIDR
$NOVA_NETWORK_NUMBER $IPS_PER_NETWORK &>> $LOGFILE
の実行にも失敗していた事が判明しました。Novaネットワークの作成に失敗した為に、手動にて
ghost@ghost-desktop:~$ sudo /usr/bin/python /usr/bin/nova-manage
project zipfile project1 admin /root/creds/novacreds.zip
上記コマンドを実行した際に、コンソールに下記に示す内容のエラーメッセージが表示されるの
も納得です。
No more networks available. If this is a new installation, you need
to call something like this:
nova-manage network create
10.0.0.0/8 10 64
さて、肝心の失敗原因ですけど、/var/log/nova/nova-install.logには下記の内容が記録されて
いました。
2011-03-22 11:17:32,427 CRITICAL nova.root [-]
(nova.root): TRACE: Traceback (most recent call last):
(nova.root): TRACE: File "/usr/bin/nova-manage", line 694, in
<module>
(nova.root): TRACE: main()
(nova.root): TRACE: File "/usr/bin/nova-manage", line 686, in main
(nova.root): TRACE: fn(*argv)
(nova.root): TRACE: File "/usr/bin/nova-manage", line 500, in create
(nova.root): TRACE: vpn_start=int(vpn_start))
(nova.root): TRACE: File "/usr/lib/pymodules/python2.6/nova/network/
manager.py", line 346, in create_networks
(nova.root): TRACE: net['dhcp_start'] = str(project_net[2])
(nova.root): TRACE: File "/usr/lib/pymodules/python2.6/IPy.py", line
880, in __getitem__
(nova.root): TRACE: return IP(IPint.__getitem__(self, key))
(nova.root): TRACE: File "/usr/lib/pymodules/python2.6/IPy.py", line
561, in __getitem__
(nova.root): TRACE: raise IndexError
(nova.root): TRACE: IndexError
(nova.root): TRACE:
上記のログによれば/usr/lib/pymodules/python2.6/IPy.pyの561行目には
「raise IndexError」が記録されていますが、ログに記録されているソース
コードの番号を下から順番にトレースしたら、どうやらNovaネットワーク作成
時にNovaネットワークで利用するIPアドレスの処理に失敗しているみたいです。
とりあえず、ディスカッションボードをお騒がせしたお詫びに、現時点で当方が
判明したNovaのインストールプログラム(
nova-CC-install-v1.1.sh)
にまつわる問題に関して分かっている範囲を一度まとめてみます。
【インストールプログラム(
nova-CC-install-v1.1.sh)の問題点】
(1)インストールプログラムより実行された外部コマンド群の戻り値を確認し
ていません。別の言い方をすれば、外部コマンドの実行は常に成功するもの
と仮定されています。その為に、523行~525行及び53行~537行のような
のようなNovaインストールにとって重要な処理で、実行に失敗しても
インストールプログラム的には何も無かったようにスルーされます。
523 /usr/bin/python /usr/bin/nova-manage user admin
$NOVA_PROJECT_USER &>> $LOGFILE
524 /usr/bin/python /usr/bin/nova-manage project create
$NOVA_PROJECT $NOVA_PROJECT_USER &>> $LOGFILE
525 /usr/bin/python /usr/bin/nova-manage network create
$PROJECT_CIDR $NOVA_NETWORK_NUMBER $IPS_PER_NETWORK &>> $LOGFILE
533 /usr/bin/python /usr/bin/nova-manage project zipfile
$NOVA_PROJECT $NOVA_PROJECT_USER /root/creds/novacreds.zip &>>
$LOGFILE
534 sleep 3
535 unzip -d /root/creds /root/creds/novacreds.zip &>> $LOGFILE
536 . /root/creds/novarc
537 cat /root/creds/novarc >> ~/.bashrc
(2)大して重要な問題では無いですけど、インストールプログラムは英語環境しか
考慮していません。例えば日本語環境でインストールプログラムを動かした際、
画面にデフォルト設定ならENTERキーと表示されている箇所などでは、ENTER
キーを押しても先へ進めまず、再度同様の内容(デフォルトならENTERキー)が
表示される。理由は日本語環境だとifconfigを実行した際の戻り値に日本語が
入ってくるために、下記ソースだと文字列のパース処理がうまくいかなくなり、
無限ループに陥る。知っていれば大したことは無いですけど、気づかないと地味
にハマる箇所です。
147 default=`/sbin/ifconfig -a | egrep '.*inet ' | head -n 1|perl -
pe 's/.*addr:(.+).*Bcast.*/$1/g' | tr -d " "`
さて、ある程度問題箇所を絞り込めたけど、ここから先は地道にnova-manageコマンドの
ソースコードをHackするしかないかな、、、、、、、、、。
素朴な疑問ですけど、ユーザ会の皆様は、OpenStackのインストールをどのようにやって
いますか?もしかして
nova-CC-install-v1.1.shを使わずに別の方法でインストールをされ
ていますか?宜しければ教えていただけませんでしょうか?