G1BS.0N

Tech Memo

Chef Server 11をインストール

| Comments

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
export no_proxy=localhost,127.0.0.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
default['chef_server']['nginx']['ssl_port'] = 443
default['chef_server']['nginx']['enable_non_ssl'] = false
default['chef_server']['nginx']['non_ssl_port'] = 8880

とりあえず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
chef_server_url "https://chef-server IP"
http_proxy "http://Proxy IP:80"
https_proxy "http://Proxy IP:80"

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

Comments