我正在编写一个简单的方法来安装任何软件包。我想要实现的唯一变化是我的配方应该只安装包,如果节点名称匹配,否则它应该什么都不做。我的代码是
package "vim" do
if node["name"] == "MyNode"
action :install
else
action :nothing
end
end
在这种情况下,即使在名为MyNode的节点上也不安装包。我也尝试使用only_if
,如下所示:
package "vim" do
only_if node["name"] == "MyNode"
action :install
end
在这种情况下,它会在每个节点上安装软件包,而不管其名称是什么!我要么弄乱了缺少某些东西的语法。
有人可以告诉我这样做的正确方法是什么?
答案 0 :(得分:0)
package "vim" if node["name"] == "MyNode"
但我想你的第一个例子应该可行。可能节点["名称"] 在您的节点上与" MyNode" 不同?
答案 1 :(得分:0)
在为不同的服务部署不同的datadog jmx配置时,我只需要这样做。 (因为datadog可以收集有限数量的指标) 我在食谱中用一个案例陈述做了。
case Chef::Config[:node_name]
when 'host1.domain.name'
cookbook_file '/etc/dd-agent/conf.d/jmx.yaml' do
source 'default/host1/jmx.yaml'
owner 'dd-agent'
group 'root'
mode '0644'
action :create
end
when 'host2.domain.name'
cookbook_file '/etc/dd-agent/conf.d/jmx.yaml' do
source 'default/host2/jmx.yaml'
...
end
end