在启动后将主厨的主机名设置为nodename

我和厨师做了atmtesting,我有一个虚拟机,我正在克隆生成新的节点。 我使用knife命令和-N参数来引导每个主机一个节点名。 问题是困难的,VM上的主机名不会改变,如果我试图引导另一个客户端,它会失败,因为厨师有这个节点已经注册。 我现在尝试使用主机名 cookbok设置我的基本angular色中的主机名,但是当我运行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 

基础angular色的属性是:

 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中是否有一个语法错误,或者只是在节点上不可访问的@configvariables? 有没有更好的方法来设置主机名到节点名?

经过这样的试验和错误,我很确定@confignodevariables不能在angular色文件中访问。 我的解决scheme是重写hostname cookbook来查找属性nodename_as_fqdn并相应地设置它。

节点名称可以通过node.name访问器在运行chef的节点上访问。

您可以使用chef_hostname cookbook将主机名设置为您的metadata.rb中的节点名称:

 depends "chef_hostname" 

然后设置主机名如:

 hostname node.name