Ruby 厨师长仅在执行资源时理解
这里有一个执行块,看起来像这样Ruby 厨师长仅在执行资源时理解,ruby,chef-infra,devops,Ruby,Chef Infra,Devops,这里有一个执行块,看起来像这样 execute 'uninstall_datadog' do command 'sudo apt-get --purge remove datadog-agent -y' only_if 'command -v datadog-agent' end 因此,我的理解是,如果的退出状态仅当不是0时,此块将不会执行。这是真的吗?是的 但是,我发现您的示例存在一些问题: 内置的包资源可以在安装包的情况下删除包 如果软件包没有安装(不再安装),chef将跳过它。
execute 'uninstall_datadog' do
command 'sudo apt-get --purge remove datadog-agent -y'
only_if 'command -v datadog-agent'
end
因此,我的理解是,如果的退出状态仅当
不是0
时,此块将不会执行。这是真的吗?是的
但是,我发现您的示例存在一些问题:
包
资源可以在安装包的情况下删除包李>
如果软件包没有安装(不再安装),chef将跳过它。
有关更多详细信息,请参阅
execute
命令中不需要sudo
命令仅当默认情况下在chef client/chef solo/chef apply流程的环境中运行时。请参见,当模拟为另一个用户时,您必须调整环境变量,如PATH
命令
是一个bash内置命令,看起来可能不是作为bash执行的。
bash-c“command-vdatadog代理”
可以工作,但也可以使用哪个datadog代理来代替。Nice这肯定是一个更好的方法
package 'datadog-agent' do
action :purge
options '--yes' # not sure about this
end