Usando o chef, como garantir que um servidor seja provisionado antes de um cliente, dependendo do servidor?

1

Estou implantando um serviço distribuído que usa um compartilhamento NFS em vários nós. Nesse cenário, há um nó mestre que exporta um compartilhamento NFS e vários nós escravos que devem montar essa exportação.

Usando o chef, eu posso provisionar o nó mestre. Quando o nó mestre estiver completo, posso provisionar os escravos em paralelo. No entanto, se o chef-cliente iniciar em (aproximadamente) o mesmo tempo em todos os nós, os escravos falharão porque o compartilhamento NFS no servidor ainda não existe.

Usando o chef, como posso garantir que o provisionamento do mestre seja concluído antes que os escravos comecem? Eu suponho que seria aceitável para os escravos fazer uma pausa (e possivelmente expirar após alguns minutos) esperando a exportação do NFS estar disponível, embora seria melhor se eu pudesse garantir que o mestre fosse totalmente provisionado (todas as receitas / funções ) antes de permitir que um chef-cliente em um escravo continue.

    
por Jeff W 20.02.2017 / 22:01

1 resposta

1

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.

    
por 23.02.2017 / 19:49