Como iniciar um serviço na inicialização após a conta ldap estar disponível

1

Eu tenho uma máquina que hospeda um banco de dados LDAP e os serviços em outras máquinas são executados como usuários desse banco de dados. Como as contas de usuário não existem localmente, os serviços não são iniciados quando essas máquinas são inicializadas antes da máquina que hospeda o banco de dados LDAP.

Todas as máquinas estão executando o Ubuntu 14.04, com exceção de um que esteja executando o CentOS 7. É possível que o upstart e o systemd esperem que o banco de dados LDAP esteja disponível antes de iniciar certos serviços?

EDITAR : Eu tentei usar um script de pré-inicialização com o Upstart que faz um loop até que o LDAP esteja disponível, mas isso não funciona. Eu encontrei no livro de receitas do Upstart que o script de pré-inicialização é executado como usuário e grupo especificado com "setuid" e "setgid". Portanto, o script de pré-inicialização nunca é executado porque o usuário e o grupo não existem até que o serviço LDAP esteja sendo executado em outra máquina.

Eu tentei especificar "respawn" também, mas isso não ajudou neste caso. Pelo que entendi do livro de receitas do Upstart, o respawn só entra em vigor quando o script principal ou executável falha. Assim, o serviço não é reiniciado porque o serviço falha antes que qualquer script seja executado.

    
por Jimmy 08.06.2016 / 16:14

1 resposta

1

Suponho que você esteja usando systemd , então eu recomendo modificar o arquivo systemd service conforme necessário.

O sinalizador Restart= indica se o serviço deve ou não ser iniciado se não estiver em execução, dependendo do motivo pelo qual ele não está sendo executado.

Você pode ter: Restart=on-failure como exemplo. Desta forma, o serviço continuará tentando iniciar até que seja bem-sucedido.

Se você quiser, você pode usar ExecStart= ou ExecStartPre= para executar os comandos bash antes que o serviço comece a confirmar que o ldap está disponível.

Você pode encontrar mais informações sobre systemd service files aqui: link

EDIT: Para o Upstart (Ubuntu), o sinal respawn deve funcionar de forma semelhante ao link systemd Restart=on-failure

    
por 08.06.2016 / 19:38