ChefでATMのテストを行い、新しいノードを生成するためにクローンを作成している仮想マシンがあります。 bootstrapをknifeコマンドと-Nパラメーターを使用して、各ホストにノード名を付けます。問題は困難で、VMのホスト名は ' tを変更し、bootstrap別のクライアントをしようとすると、Chefがこのノードにすでにサインアップしているため、失敗します。ここで、ホスト名を設定しようとしました base Role = with hostname Cookbokですが、実行するとchef-client
それは私に:
---- Begin output of hostname @config[:chef_node_name] ----
STDOUT:
STDERR: hostname: the specified hostname is invalid
---- End output of hostname @config[:chef_node_name] ----
Ran hostname @config[:chef_node_name] returned 1
基本ロールの属性は次のとおりです。
name "base"
description "Base role applied to all nodes"
override_attributes(
"chef_client" => {
"init_style" => "upstart",
"server_url" => "http://chef.ws:4000"
},
"set_fqdn" =>
"@config[:chef_node_name]"
)
run_list(
"recipe[hostname]",
"recipe[chef-client::delete_validation]",
"recipe[chef-client::service]"
)
ここでset_fqdnに構文エラーがありますか、それともノードで@config変数にアクセスできないだけですか?ホスト名をノード名に設定するより良い方法はありますか?
試行錯誤の末、ロールファイルでは@config
変数とnode
変数にアクセスできないと確信しています。私の解決策は、ホスト名クックブックを書き直して属性nodename_as_fqdn
を探し、それに応じて設定することでした。
ノード名は、chefを実行しているノードでnode.name
アクセサーを介してアクセスできます。
Chef_hostnameクックブックを使用して、これをmetadata.rbに配置することにより、ホスト名をノード名に設定できます。
depends "chef_hostname"
次に、次のようにホスト名を設定します。
hostname node.name