Chef:如果已存在amazon-ssm-agent-2.2.355.0-1.x86_64,请跳过安装

时间:2018-05-08 21:05:59

标签: chef

如果代理商" amazon-ssm-agent-2.2.355.0-1.x86_64"如何跳过ssm代理的安装?已经存在于机器上?

这是我的食谱:

remote_file '/tmp/amazon-ssm-agent.rpm' do
  source 'https://s3.amazonaws.com/SMAgent/linux_amd64/amazon-ssm-agent.rpm'
  action :create
  notifies :run, 'execute[amazon-ssm-agent-install]', :immediately
end

execute 'amazon-ssm-agent-install' do
  command 'rpm -ivh /tmp/amazon-ssm-agent.rpm'
  action :nothing
  rpm -qa | grep ssm
end

2 个答案:

答案 0 :(得分:1)

使用rpm_package资源。这已经了解了如何检查包裹。

答案 1 :(得分:1)

使用package资源或其中一个相关资源(本例中为rpm_package)将是处理此特定情况的最佳方式。但是,您应该查看[{3}}的Chef资源。

在您的情况下,rpm -qa | grep ssm是正确的命令,但您需要使用not_if防护,以防止安装。例如:

not_if 'rpm -qa | grep ssm'

当一个字符串传递给一个守卫时,它将作为一个shell命令运行。 shell命令(truefalse)的结果确定资源是否将根据保护类型运行(only_if保护返回true或not_if保护返回true)。您还应该熟悉Guards的不同选项,因为shell脚本不是唯一的选项。