事实证明我无法检查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访问过滤器。
如果有更好的方法,请告诉我。
请帮忙。
答案 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