Chef Server を11.xにしようとしてハマったのでまとめておきます。
インストール手順は、このへん。
$ sudo yum install chef-server-11.0.6-1.el6.x86_64.rpm
それから
$ sudo chef-server-ctl reconfigure
失敗します。
Recipe: chef-server::bootstrap * execute[verify-system-status] action run ================================================================================ Error executing action `run` on resource 'execute[verify-system-status]' ================================================================================ Mixlib::ShellOut::ShellCommandFailed ------------------------------------ Expected process to exit with [0], but received '22' ---- Begin output of curl -sf http://localhost:8000/_status ---- STDOUT: STDERR: ---- End output of curl -sf http://localhost:8000/_status ---- Ran curl -sf http://localhost:8000/_status returned 22 (中略) [2013-03-14T14:53:27+09:00] ERROR: Running exception handlers [2013-03-14T14:53:27+09:00] ERROR: Exception handlers complete Chef Client failed. 110 resources updated [2013-03-14T14:53:27+09:00] FATAL: Stacktrace dumped to /opt/chef-server/embedded/cookbooks/cache/chef-stacktrace.out [2013-03-14T14:53:27+09:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: execute[verify-system-status] (chef-server::bootstrap line 21) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '22' ---- Begin output of curl -sf http://localhost:8000/_status ---- STDOUT: STDERR: ---- End output of curl -sf http://localhost:8000/_status ---- Ran curl -sf http://localhost:8000/_status returned 22
何度やっても同じです。 Ubuntu12.04でもCentOS6.3でも同じでした。
ここみると、DNSとかhostsとかが原因とありますが、どういじっても同じ結果・・・
原因はProxyでした。 curlがlocalhostもhttp_proxyが適用されてしまってたみたいです。
$ export no_proxy=localhost,127.0.0.1
- /etc/profile.d/proxy.sh
1
|
|
これで再挑戦
$ sudo chef-server-ctl reconfigure
(略) Recipe: chef-server::erchef * service[erchef] action restart - restart service service[erchef] Chef Client finished, 152 resources updated chef-server Reconfigured!
成功しました!
でも・・・
$ sudo chef-server-ctl tail
==> /var/log/chef-server/nginx/error.log <== 2013/03/14 15:01:07 [emerg] 8903#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
エラーが出てます。 chef11ではnginxを使うので、Apacheとボートがバッティングしてるようです。
chefのattributeを変更します。
- /opt/chef-server/embedded/cookbooks/chef-server/attributes/default.rb
1 2 3 |
|
とりあえずnon_ssl_portを80から変更してみました。 ssl_portも変更したりしてみましたが、うまく動きませんでした。 とりあえず、80番ポートは既存のApacheで、443はchef-serverのnginxで動かすことにしました。
再実行
$ sudo chef-server-ctl reconfigure
Recipe: chef-server::nginx * service[nginx] action restart - restart service service[nginx] Chef Client finished, 5 resources updated chef-server Reconfigured!
chef-server自信をclient登録します。
- /etc/chef/client.rb
1 2 3 |
|
validation.pemを配置
cp /etc/chef-server/chef-validator.pem /etc/chef/validation.pem
chef-clientを実行
# chef-client Starting Chef Client, version 11.4.0 Creating a new client identity for helios.jkcloud.org using the validator key. resolving cookbooks for run list: [] Synchronizing Cookbooks: Compiling Cookbooks... [2013-03-14T15:38:52+09:00] WARN: Node host.domain has an empty run list. Converging 0 resources Chef Client finished, 0 resources updated