2

事实证明,我无法在 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 访问过滤器。

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

请帮忙。

4

3 回答 3

5

利用

node.name

或者

node.name.split('.')[0]
于 2015-05-26T23:13:43.330 回答
1

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

如果您想要特定于节点的东西,似乎您可以插入厨师中的属性优先级。您可能会在说明书级别为属性设置默认值,然后在节点上设置显式属性。这也意味着如果您需要其中 2 台这样的服务器来获得价值,那么您无需更改说明书,只需更改服务器上的配置即可。

于 2014-02-24T22:04:18.113 回答
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
于 2016-03-04T00:38:30.913 回答