Я написал Баш ресурс следующим образом:not_if не работает, как ожидалось в Баш ресурс
bash 'initialize_vault' do
environment (node['vault']['env'])
code <<-EOH
vault init > /etc/vault/keys
EOH
not_if { vault init | grep 'initialized' }
end
Кажется, что not_if не работает, как ожидалось Баш выполняется каждый раз.
Что такое правильный способ написать not_if
здесь?
Глупый вопрос здесь, но вы уверены, что содержимое 'initialized', которое вы ищете, записывается в stdout, а не stderr (где данные ведения журнала/состояния, по соглашению, * предположительно *, чтобы пойти)? –
Прошло некоторое время с тех пор, как я работал с шеф-поваром, но передавая строку оболочки в этой форме, а не как, ну, * строка * удивляет. 'not_if 'vault init 2> & 1 | grep -q initialized'' пахнет больше, чем я помню, когда был прав. –
Тем не менее, в контексте основная логика здесь вряд ли будет правильной. Подумайте, что это на самом деле делает: вы всегда * запускаете 'vault init' сразу - при оценке предложения' not_if' - и после этого пытаетесь запустить его во второй раз, если это предложение 'not_if' не вернулось правда. Это не имеет смысла: если вы не хотите запускать его, если он уже инициализирован, тогда как безопасно запускаться в предложении 'not_if'? –