我正在学习厨师,我正在尝试以一种重复供应不会破坏任何东西的方式编写所有内容。
我有一台部署在机器上的服务器,然后加载了一些代码。下次配置我喜欢先测试代码是否已经加载。我想以通用的方式做到这一点,因为我在不同的食谱中使用它。 我的想法是定义一个函数/ defintion / etc.我可以调用测试条件的函数并返回一个值。我的希望是我可以在not_if子句中使用此函数/ ...进行其他操作。
有没有办法在厨师中使用defintion / action / provider / ...或者我是否需要在某处添加一些红宝石?
答案 0 :(得分:2)
Chef中的资源都有条件执行。
not_if和only_if语句可以将shell命令作为字符串或ruby块来确定它们是否应该执行它们的操作。
user "myuser" do
not_if "grep myuser /etc/password"
action :create
end
您可能有一个节点属性并将其用作条件或调用返回true或false的ruby方法。
template "/tmp/somefile" do
mode "0644"
source "somefile.erb"
not_if { node[:some_value] }
end
http://wiki.opscode.com/display/chef/Resources#Resources-ConditionalExecution