厨师检查主机名?

时间:2014-02-24 21:32:12

标签: ruby chef chef-solo

事实证明我无法检查Chef中的节点(主机)名称,因此我正在尝试找出实现以下目标的最佳方法:

If hostname is X
 ldap_access_filter = memberOf=<%= node['sssd_ldap']['ldap_access_node_filter'] %>
else
 ldap_access_filter = memberOf=<%= node['sssd_ldap']['ldap_access_filter'] %>
end

这个想法是,当节点名称(或某个匹配变量)为真时,它使用ldap_access_node_filter,这是一个唯一值,否则,它使用默认值。我基本上配置sssd配置,其中一个主机需要一个特殊的ldap访问过滤器。

如果有更好的方法,请告诉我。

请帮忙。

3 个答案:

答案 0 :(得分:4)

使用

node.name

node.name.split('.')[0]

答案 1 :(得分:1)

Ohai应该允许你获取主机名吗?

如果你想要特定于节点的东西,你似乎可以插入到chef中的属性优先级。您可以在cookbook级别为属性设置默认值,然后在节点上设置显式属性。这也意味着如果你需要其中两个服务器来获得价值,你就不会改变服务本上的配置。

答案 2 :(得分:1)

我刚试图将一个特殊版本的文件部署到一个主机名。我用了not_if,only_if

cookbook_file 'file/to/replace' do
  not_if {node.name == 'host.domain.name'}
  source 'file_version.4'
  action :create
end

cookbook_file '/file/to/replace' do
  only_if {node.name == 'host.domain.name'}
  source 'file_version.5'
  action :create
end