我和厨师做了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? 有没有更好的方法来设置主机名到节点名?
经过这样的试验和错误,我很确定@config和nodevariables不能在angular色文件中访问。 我的解决scheme是重写hostname cookbook来查找属性nodename_as_fqdn并相应地设置它。
节点名称可以通过node.name访问器在运行chef的节点上访问。
您可以使用chef_hostname cookbook将主机名设置为您的metadata.rb中的节点名称:
depends "chef_hostname"
然后设置主机名如:
hostname node.name