Chef infra 厨师长:如果已经存在amazon-ssm-agent-2.2.355.0-1.x86_64,则跳过安装

Chef infra 厨师长:如果已经存在amazon-ssm-agent-2.2.355.0-1.x86_64,则跳过安装,chef-infra,Chef Infra,如果计算机上已存在代理“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-

如果计算机上已存在代理“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

使用
rpm\u包
资源代替。它了解如何检查已经存在的包。

使用
rpm\u包
资源。它了解如何检查已存在的包。

使用
资源或其相关资源之一(在本例中为
rpm\u包
)将是处理此特定情况的最佳方法。但是,您应该查看有关厨师资源的详细信息

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

not_如果'rpm-qa | grep ssm'


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

使用
资源或其相关资源之一(在本例中为
rpm\u包
)将是处理此特定情况的最佳方法。但是,您应该查看有关厨师资源的详细信息

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

not_如果'rpm-qa | grep ssm'

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