这是我的knife.rb文件。在这里我想将node_name设置为该本地机器的fqdn。我不想手动输入它。
因为我必须将它用于n台机器。我只是写了默认属性来获取机器的fqdn
它提供了ruby 语法错误。
log_level :info
log_location STDOUT
client_key '/etc/chef/client.pem'
node_name '#node['fqdn']'
chef_server_url 'myserverurl'
SyntaxError: /root/.chef/knife.rb:5: syntax error,
unexpected tIDENTIFIER, expecting end-of-input
node_name '#node['fqdn']'
^
相关文件内容:
4: client_key '/etc/chef/client.pem'
5: node_name '#node['fqdn']'
6: chef_server_url 'myserverurl'
答案 0 :(得分:0)
节点属性是Chef配方的东西,它们不存在于配置中(除了通常无效的Ruby语法之外)。幸运的是,FQDN已经是默认的node_name,所以根本不要指定一个!
答案 1 :(得分:0)
根据评论:
如果你真的需要,可以使用chef生成knife.rb文件。
在cookbook中使用模板资源,该资源将从.erb文件生成knife.rb,您将在其中包含<%= node['fqdn'] %>
作为coderanger所说的。
但我强烈建议不要这样做,因为您的配置系统应该已经处理了节点的销毁/重新创建,因此它更多地是在厨师而不是节点本身管理节点和客户端的地方。 / p>
旧:
为什么要在所有节点上使用Knife?
Knife是一种管理工具,应该在工作站上用于管理节点,cookbb等。
请解释您的使用案例,以便我们编辑并指导您尝试实现的目标。这是一个XY问题(工具上的问题而不是问题的问题)
答案 2 :(得分:0)
我同意Tensibai和coderanger的说法,这不是你最好的方法,但如果你真的想这样做,那么我建议你伸出机器问一下。
node_name `hostname --fqdn`
OR
node_name `hostname`
取决于你是否想要fqdn。当然,两者都假设您在主机上设置了有效的主机名。