Ordem de execução para cloud-init-local no AWS Linux

1

Estou tentando criar uma nova instância do EC2 e estou fornecendo dados do usuário para a instância no momento da criação. Meus dados de usuário executam alguns comandos bash que modificam os parâmetros de um arquivo de propriedades para outro aplicativo (myApplication). A intenção é modificar a configuração do myApplication ANTES de iniciar. myApplication está configurado para iniciar a partir de /etc/init.d.

Estou basicamente tentando fazer o que é descrito aqui

Vejo que a configuração do chkconfig para /etc/init.d/cloud-init-local é definida com a prioridade 50. Estou assumindo que esse é o mecanismo pelo qual meu script de dados do usuário é executado.

myApplication também é configurado com chkconfig, mas com prioridade 90. O plano é que os dados do usuário sejam executados ANTES de myApplication ser iniciado.

Mas, não é isso que estou experimentando. Eu posso ver no arquivo cloud-init-output.log que meus dados de usuário são executados, mas myApplication já foi iniciado.

A minha suposição é que meu script de dados do usuário é executado por /etc/init.d/cloud-init-local errado? Minha expectativa do comportamento da seqüência de inicialização está incorreta?

Qualquer ajuda é apreciada, obrigado!

    
por ben_979 22.06.2017 / 00:54

1 resposta

0

Acho que você acertou um bug do systemd. (Um que eles achavam que era uma boa idéia.) Especificamente para melhorar a velocidade de inicialização em scripts sysv que são importados, eles são executados em paralelo, A MENOS QUE você configure dependências LSB, que o sysv init ignora.

A maneira de contornar isso é para

  1. converta ambos os scripts init em scripts systemd com dependências systemd.
  2. adiciona dependências aos dois scripts de inicialização.
  3. escolha outro sistema init que não tente ser mais inteligente que você.
por 22.06.2017 / 01:59