web-dev-qa-db-ja.com

シェフのホスト名をノード名に設定するオン/アフターbootstrap

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変数にアクセスできないだけですか?ホスト名をノード名に設定するより良い方法はありますか?

3
wintersolutions

試行錯誤の末、ロールファイルでは@config変数とnode変数にアクセスできないと確信しています。私の解決策は、ホスト名クックブックを書き直して属性nodename_as_fqdnを探し、それに応じて設定することでした。

2
wintersolutions

ノード名は、chefを実行しているノードでnode.nameアクセサーを介してアクセスできます。

Chef_hostnameクックブックを使用して、これをmetadata.rbに配置することにより、ホスト名をノード名に設定できます。

depends "chef_hostname"

次に、次のようにホスト名を設定します。

hostname node.name
0
lamont