Em geral, a melhor abordagem é não garantir tudo. Escreva o código da sua receita de uma forma que falhe normalmente se as dependências não estiverem disponíveis, e então use o modo daemon do chef-client (ou execute a partir do cron) para continuar tentando o tempo que for necessário até conseguir.