Chef资源,“ not_if”中的脚本不起作用

问题描述 投票:0回答:1

我有一个看起来像这样的Chef_resource

bash 'regenerate-master-list' do
  code <<-EOH
  rm -f /etc/datadog-agent/conf.d/redis_sentinel.d/conf.yaml
  EOH
  action :run
  notifies :create, 'cookbook_file[/etc/datadog-agent/conf.d/redis_sentinel.d/conf.yaml]', :immediately
  not_if "diff <(cat /etc/datadog-agent/conf.d/redis_sentinel.d/master_list) <(redis-cli -p 26379 info sentinel | grep name | sed 's/,.*//' | cut -d '=' -f 2-)"
end

此块总是执行,因为not_if是错误的,当我尝试手动运行它时,我看到了预期的结果,即无差异。我有什么要添加到脚本中的吗?

bash chef
1个回答
0
投票

您可以尝试使用等于您的execute保护对象的命令来创建bash not_if资源。

execute "diff <(cat /etc/datadog-agent/conf.d/redis_sentinel.d/master_list) <(redis-cli -p 26379 info sentinel | grep name | sed 's/,.*//' | cut -d '=' -f 2-)"

它将在下一次厨师运行时失败,您将看到输出。

我的猜测是,厨师不能运行redis-cli,因为它不在厨师的PATH中。

© www.soinside.com 2019 - 2024. All rights reserved.