повар: not_if not_working - PullRequest
       11

повар: not_if not_working

1 голос
/ 22 ноября 2011

Я бы хотел запустить ssh-copy-id, если у пользователя еще нет своего ключа на сервере, поэтому в блоке execute есть директива not_if. Я убедился, что команда not_if возвращает 0, но блок execute выполняется в любом случае.

execute "add ssh key to #{shortname}" do
  not_if cmd # proceed only if server doesn't have this key
  command "echo 'If prompted for password it is already in your clipboard and you can just paste it in and hit enter'; ssh-copy-id deploy@#{hostname}"
  cmd = "ssh -o 'BatchMode yes' deploy@#{hostname} echo 'test'"
  puts cmd
end

drostie:chef-ops (ssh_copy_id)$ ssh -o 'BatchMode yes' deploy@jenkins01.c45477.blueboxgrid.com echo 'test'
test
drostie:chef-ops (ssh_copy_id)$ echo $?
0

Есть идеи?

Ответы [ 2 ]

1 голос
/ 23 ноября 2012

Попробуйте запустить его в режиме отладки.Он даст вам гораздо больше информации о том, почему он считает, что он должен выполняться при каждом запуске.

chef-client -l debug
0 голосов
/ 23 ноября 2012

Я полагаю, что ваша команда not_if успешно выполняется на вашем хосте, но внутренним результатом является код ошибки.

То есть, ssh работал нормально, смог подключиться, выполнил ваш один лайнер, (которыйпроизошла ошибка), затем ssh успешно завершился, поэтому блок был запущен.

Я бы повторил предложение @ jtimberman (я слышал, что он знает кое-что о шеф-поваре :)) и попытался управлять ключами ssh с помощьюпакеты данных, роли или среды в зависимости от контекста.

...