chef clientを実行した後fqdnがlocalhostで登録されてしまう

knife bootstrap hoge -N hoge.local -x mitto --sudo

とかしてChef Serverに登録できたなぁ思って
Web ConsoleのStatusタブを確認してみると
なぜかfqdnがlocalhostで登録されてしまっているホストがいて

なんだろうと調べてみたお話

Chef Clientを動かしていたのはCentOS 6.5のホストで、
/etc/sysconfig/networkなどで

NETWORKING=yes
HOSTNAME=hoge.local

のように設定済でhostnameコマンドで確認すると

[mitto@hoge ~]$ hostname

hoge.local

のように設定ができていることが前提です。
少し悩んでしまったんですが、調べてみたところ以下がどんぴしゃでした

Chef Client: fqdn ‘localhost’ issue

ようはhostsファイル内で

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 hoge.local

の様になっていると先頭のlocalhostが優先して使われてしまう場合がある模様。

この辺の情報を収集しているのはOhaiさんなので
ソースを漁ってみると以下がホスト名周りの収集に関連していそうです。

https://github.com/opscode/ohai/blob/master/lib/ohai/plugins/hostname.rb#L114

linuxの場合は以下の様な対応になっていて

hostname => hostname -s
machinename => hostname
fqdn => hostname -f

今回の問題はfqdnなので「hostname -f」を動かした時の挙動を見てみればよさそうです。

まずは上のlocalhostが優先されるhosts設定の時

[mitto@hoge ~]$ hostname -f

localhost

なってますね。。

それでは先ほどのページにあったようにホスト名を先頭に変更して実行してみます。

127.0.0.1   hoge.local localhost localhost.localdomain localhost4 localhost4.localdomain4

 

[mitto@hoge ~]$ hostname -f

hoge.local

正常にホストのfqdnが出力されました。

引っかかることがありそうなのでメモメモっと。

コメント