我对Chef
很新。我有一个安装sendmail
的配方,它会完成我的配置。我注意到Chef
在每次运行时重新启动服务。那是因为我正在运行调用会话重启的execute
。
看起来像这样:
execute "hashAccess" do
command "makemap hash /etc/mail/access < /etc/mail/access"
notifies :restart, "service[sendmail]"
end
我只有在access
文件更新时才需要调用它。
template "/etc/mail/access" do
source "access.erb"
mode "0644"
notifies :run, "execute[hashAccess]"
end
更新文件后,将execute
调用两次。
两个资源都在同一个配方中,当我尝试define
hashAccess
时出现错误
ERROR: Cannot find a resource for define on amazon version 2013.09
如何让执行资源仅在被调用时运行?
答案 0 :(得分:6)
您应该将action :nothing
添加到执行资源中。
execute "hashAccess" do
command "makemap hash /etc/mail/access < /etc/mail/access"
action :nothing
notifies :restart, "service[sendmail]"
end
这种方式不会被执行,除非其他资源通知。