Chef: пропустите установку, если amazon-ssm-agent-2.2.355.0-1.x86_64 уже существует - PullRequest
0 голосов
/ 09 мая 2018

Как пропустить установку агента ssm, если на компьютере уже существует агент "amazon-ssm-agent-2.2.355.0-1.x86_64"?

Вот моя поваренная книга:

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 голосов
/ 16 мая 2018

Использование ресурса package или одного из связанных с ним ресурсов, в данном случае rpm_package, было бы оптимальным способом обработки этого конкретного случая. Тем не менее, вы должны посмотреть на Guards для ресурсов Chef.

В вашем случае rpm -qa | grep ssm - правильная команда, но вам нужно использовать not_if для защиты от установки. Например:

not_if 'rpm -qa | grep ssm'

Когда строка передается охраннику, она запускается как команда оболочки. Результат команды оболочки (true или false) определяет, будет ли ресурс работать на основе типа защиты (only_if для защиты возвращается true или not_if для защиты возвращает true). Вам также следует ознакомиться с различными опциями Guard Interpreters , поскольку сценарии оболочки - не единственная опция.

0 голосов
/ 09 мая 2018

Вместо этого используйте ресурс rpm_package. Это понимает, как проверить пакет уже.

...