如何在knife.rb中设置本地机器的fqdn

时间:2015-01-09 11:14:28

标签: chef

这是我的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'

3 个答案:

答案 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`

取决于你是否想要f​​qdn。当然,两者都假设您在主机上设置了有效的主机名。