Ansible trava no começo do pumactl

1

Eu tenho um playbook para instalar o puma na minha instância do ec2 e está tudo bem, exceto quando eu executo bundle exec pumactl start no final ele inicia o servidor, mas o playbook é interrompido indefinidamente.

Aqui está a tarefa Ansible -

 - shell: /home/ubuntu/.rbenv/shims/bundle exec pumactl start
   args: 
     chdir: /home/{{ user }}/{{ app_name }}
     warn: no

Existe uma maneira de evitar isso?

Atualizar

Eu adicionei isso ao meu arquivo /etc/systemd/system/puma.service e executei-o com o systemd como @Michael sugeriu -

[Unit]
Description=Puma Rails Server
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/my_app
ExecStart=/bin/bash -lc '/home/ubuntu/.rbenv/shims/bundle exec puma -C /home/ubuntu/my_app/config/puma.rb'
ExecStop=/bin/bash -lc '/home/ubuntu/.rbenv/shims/bundle exec pumactl -S /home/ubuntu/my_app/shared/pids/puma.state stop'
TimeoutSec=15
Restart=always

[Install]
WantedBy=multi-user.target
    
por Ryan Grush 25.07.2018 / 16:23

1 resposta

3

Você esqueceu de daemonizar o puma, então ele está sendo executado em primeiro plano. Ansible estava esperando por ele sair. Adicione a opção -d ao comando.

Melhor ainda, você deve criar uma unidade systemd para executar o puma como um serviço e, em seguida, inicie esse serviço . Daemonizing não é necessário nesse caso, pois o systemd irá lidar com tudo.

BTW, é uma prática recomendada usar command em vez de shell , a menos que você realmente precisa de processamento shell (que neste caso você não faz).

    
por 25.07.2018 / 16:43