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).