如果代理商" 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
答案 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命令(true
或false
)的结果确定资源是否将根据保护类型运行(only_if
保护返回true或not_if
保护返回true)。您还应该熟悉Guards的不同选项,因为shell脚本不是唯一的选项。