Eu tenho uma caixa Vagrant rodando Ubuntu 15.04, que possui um script inicial que inicia um serviço quando o sistema é inicializado. Possui uma start on vagrant-mounted
sub-rotina porque o serviço requer que o diretório /vagrant seja montado pelo Vagrant.
Agora estou migrando este script para o systemd (no qual sou completamente novo) e não consigo executar o script com êxito durante a inicialização porque /vagrant não está montado quando o script é executado. After=vagrant-mounted
não funciona, mas pode ajudar a mostrar o que estou tentando fazer.
Como executo uma unidade systemd quando um diretório Vagrant foi montado durante a inicialização?
Observaçãosystemctl start my.service
fazinicie o serviço com sucesso e o serviço será systemctl enabled
editado.
Responder1
Meu entendimento da sequência de inicialização do Vagrant é que o Vagrant é montado /vagrant
(e quaisquer outros sistemas de arquivos compartilhados que você definiu) usando SSH, após a conclusão da sequência de inicialização.
Como tal, você provavelmente desejará executar systemctl start my.service
em um provisionador, comrun: always
especificado, para que o provisionador seja executado em cada inicialização, não apenas quando a VM for criada inicialmente.
Isso não seria necessário se o systemd tivesse a capacidade de detectar quando um sistema de arquivos foi montado, mas para minha surpresa não consigo encontrar nenhuma indicação de que o systemd suporte tal funcionalidade.