Шеф понимает only_if в ресурсе выполнения - PullRequest
0 голосов
/ 02 мая 2019

У меня есть блок исполнения, который выглядит следующим образом

execute 'uninstall_datadog' do
  command 'sudo apt-get --purge remove datadog-agent -y'
  only_if 'command -v datadog-agent'
end

Так что я понимаю, что если состояние выхода only_if не равно 0, тогда этот блок не будет выполняться. Это правда?

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Да.

Однако я вижу некоторые проблемы с вашим примером:

  1. встроенный ресурс package может удалить пакет, если он установлен.
  package 'datadog-agent' do
    action :purge
    options '--yes' # not sure about this
  end

Если пакет не установлен (больше), шеф-повар просто пропустит его.Подробнее см. https://docs.chef.io/resource_package.html.

обычно chef запускается от имени пользователя root, поэтому команда sudo не требуется в командах execute.

only_if по умолчанию запускается в среде chef-client / chef-solo / chef-apply.См. https://docs.chef.io/resource_common.html#arguments, вам нужно будет настроить переменные окружения, такие как PATH, когда вы будете выдавать себя за другого пользователя

0 голосов
/ 02 мая 2019

command - встроенная функция bash, похоже, что она не выполняется как bash.bash -c "command -v datadog-agent" будет работать, но также может использовать which datadog-agent.

...