ruby Chef not_if/only_if命令结果和字符串比较

e5njpo68  于 2023-03-12  发布在  Ruby
关注(0)|答案(1)|浏览(170)

我试图运行一个命令,并比较其输出,但似乎我的波纹管代码是不是工作,因为我希望它。

execute 'testcond' do
  command "echo success"
  only_if {"lsb_release -rs" == '22.04'}
end
kxe2p93d

kxe2p93d1#

您正在使用的保护依赖于{ }中表达式的返回状态。您的表达式更像是比较两个字符串lsb_release -rs22.04。其计算结果为false,并且如预期的那样跳过执行。
我建议使用Chef收集的关于节点的节点属性。

execute 'testcond' do
  command 'echo success'
  only_if { node['platform_version'] == '22.04' }
end

如果您想使用该命令,我们可以在变量中获取该命令的结果,然后在only_if guard中进行比较。

distro_ver = `lsb_release -rs`

execute 'testcond' do
  command 'echo success'
  only_if { distro_ver.chomp! == '22.04' }
end

注意,我想使用chomp作为命令的输出,添加一个换行符(\n)。

相关问题