Iniciar o serviço após a execução dos dados do usuário da AWS

1

Estou construindo uma AMI baseada em uma AMI do Ubuntu 16.04.

Quando inicio uma instância da minha AMI, gostaria de passar um script de dados do usuário que é executado antes da inicialização do serviço na AMI.

Parece que os dados do usuário são executados em cloud-final.service . Se eu systemctl status cloud-final ou journalctl -u cloud-final , vejo a saída do meu script de dados do usuário.

Eu tentei configurar meu arquivo .service para iniciar o serviço após cloud-final.service

[Unit]
Description=My Service
After=network.service
After=cloud-final.service

...

mas o cloud-final tem RemainAfterExit=yes , o que significa que nunca é concluído, pelo que o meu serviço nunca é iniciado.

Como posso configurar o AWS Ubuntu para iniciar meu serviço após o script de dados do usuário ter sido executado?

    
por Bryan 30.08.2017 / 22:29

2 respostas

1

O que você provavelmente poderia fazer é fazer com que o script de dados do usuário escreva um arquivo que signifique que ele está completo (no final do script), e faça com que o outro serviço seja iniciado em algum lugar perto do final, por exemplo o arquivo. Quando perceber que o arquivo está sendo criado (ou o registro de data e hora que está sendo atualizado ou o conteúdo alterado, o que for), inicie o restante do serviço e saia normalmente.

    
por 30.08.2017 / 22:35
0

Use

[Unit]
…
After=cloud-final.service
…
[Install]
WantedBy=cloud-init.target

Eu corri para isso também. journalctl mostrou dados dos usuários em execução depois de multi-user e antes que a meta cloud-init fosse atingida.

<timestamp> <ip_addr> systemd[1]: Reached target Multi-User System.
[snip]
<timestamp> <ip_addr> systemd[1]: Starting Execute cloud user/final scripts...
<timestamp> <ip_addr> user-data[1592]: my user data stuff
[snip]
<timestamp> <ip_addr> systemd[1]: Started Execute cloud user/final scripts.
[snip]
<timestamp> <ip_addr> systemd[1]: Reached target Cloud-init target.

Então eu pensei que fosse necessário / desejado por cloud-init em vez do usual multi-user target (que pode ser o que op tinha), e simplesmente funcionou.

    
por 29.10.2018 / 17:06