我现在正在学习厨师,我正在尝试以一种重复配置不会破坏任何东西的方式编写所有内容。
我有一个部署在机器上的服务器,然后加载了一些代码。下次配置时,我想先测试代码是否已经加载。我想以一种通用的方式来做,因为我在不同的食谱中使用它。我的想法是定义一个函数/定义/等。我可以调用测试条件并返回一个值的函数。我的希望是我可以在 not_if 子句中使用这个函数/... 来执行其他操作。
有没有办法在厨师中通过定义/动作/提供者/......或者我需要在某处添加一些红宝石的东西?
我现在正在学习厨师,我正在尝试以一种重复配置不会破坏任何东西的方式编写所有内容。
我有一个部署在机器上的服务器,然后加载了一些代码。下次配置时,我想先测试代码是否已经加载。我想以一种通用的方式来做,因为我在不同的食谱中使用它。我的想法是定义一个函数/定义/等。我可以调用测试条件并返回一个值的函数。我的希望是我可以在 not_if 子句中使用这个函数/... 来执行其他操作。
有没有办法在厨师中通过定义/动作/提供者/......或者我需要在某处添加一些红宝石的东西?
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