SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|

2015-11-10(Tue) アイ・キャント・オープン・スタック

  Fedora23が出たし、コンピュートノードを別にしたいし、ということで、Fedora23でopenstackを入れなおすことにした。先日「どうせ何度か入れなおすことになるだろうから」などとは書いたが……

  何度入れなおしゃええんじゃ!

  ……というくらい、すんなりと入らない。フタをあけてみれば、packstackが呼んでいるpuppetが呼んでいるhieraのバグだったのだが、puppetもhieraも触ったことがなかったので、問題の追い方すら手探り状態でエラく回り道してしまった。

  まずは出るこのエラー。

Error: Evaluation Error: Error while evaluating a Function Call, undefined method `unsafe_load_file' for Psych:Module at /var/tmp/packstack/xxxx/manifests/xx.xx.xx.xx_prescript.pp:2:22 on node pute0.itline.jp

  これはhieraのバグで、Bugzillaに報告がある。そして、それに関連する別のBugzillaに……

# dnf --enablerepo=updates-testing update hiera

  ……という「最新のhiera-1.3.4-3.fc23から、テスト中のhiera-3.0.1-1.fc23に更新する」対処っぽいものがあるので、それをやっちまう……と状況によっては、また別の問題にハマるのだ。

Error: Evaluation Error: Error while evaluating a Function Call, Could not find data item CONFIG_USE_SUBNETS in any Hiera data file and no default supplied at /var/tmp/packstack/xxxx/manifests/xx.xx.xx.xx_prescript.pp:2:22 on node pute0.itline.jp

  hiera-3.0.1-1.fc23では、ナゼか/etc/hiera.yamlのdefaultsの定義がcommonに変わっており、packstackが用意したdefaults.yamlが読まれなくなってしまう。その結果「CONFIG_USE_SUBNETSが未定義」となってしまうのだ。

  ここは、hieraを上げたりせず、直接パッチを当てれば済むようだ。

# vi /usr/share/ruby/vendor_ruby/hiera/config.rb
<       YAML.unsafe_load_file(source)
>       YAML.load_file(source)

  なんなんじゃ、このイカにもヤリかけっぽいバグは……。

  それと、packstackの謎仕様にもハマった。今回、2ノード分のマシンを用意したので、コントローラとコンピュートノードにするつもりで……

# packstack --answer-file=answer_file --install-hosts=172.24.0.172,172.24.0.173

  ……などとやったのだが、そうすると、せっかく編集したanswer_fileが無視されてしまうのだ。answer-fileを利用する場合、ホスト指定もanswer_file内で行い、--install-hostsオプションを使ってはいけないようだ。

  さらに、ストレージを供給するcinderとswiftだが、特に指定をしないと適当な領域が確保されてしまうので、ここは最初から意図したところを指定したいところなのだが、cinderはcinder-volumesという名前のLVMのボリュームグループを、swiftはフォーマット済みの領域を、各々準備しておく必要がある。

  最後に、すんなりと入ってしまえば問題ないのだが、不思議なことにpackstackは、途中でエラーが起こると、最後に関連ログをサックリと消して終了し、証拠の隠滅を図ろうとするので、それをヤメさせるパッチを当てる。

# vi /usr/lib/python2.7/site-packages/packstack/installer/run_setup.py
<         server.append('rm -rf %s' % host_dir)
>         server.append('#rm -rf %s' % host_dir)

  で、どうにかこうにかインストールが完了したところで、ウェブブラウザからHorizonにアクセスする……と、妙に重い……しばしば500番が返ったりする……ログを見てみたら、OOM Killerだらけじゃねーか。4GBではメモリが足りんという事か。

  しかし、インストール作業も飽きてきた。puppetとhieraと付き合い始めたのも縁であるから、ちょっと自動化でも図ってみようかしらん。