Iniciando um processo de execução longa no cloud-init na instância ec2

3

Estou tentando e não consigo iniciar um comando de longa duração no lançamento de um EC2 (Amazon Linux). Ele precisa ser executado sob a conta do usuário ec2. Esta foi minha primeira tentativa:

#!/bin/bash
echo 'Woot 1!' > /home/ec2-user/woot1.txt
pushd /home/ec2-user/my-app-dir
nohup sudo -u ec2-user /home/ec2-user/my-app-dir/my_process.py &
echo 'Woot 2!' > /home/ec2-user/woot2.txt

O comando que estou tentando executar é a linha "nohup", para executar my_process.py.

O shell script funciona quando eu o executo como root em um shell, mas quando eu o forneço em user-data para ec2-run-instances e faço login na instância, vejo woot1.txt e woot2.txt, mas my_process.py não está em execução. Além disso, my_process.py cria um arquivo de log quando é executado, mas não há arquivo de log (e nenhum nohup.out) quando forneço o script como dados do usuário para ec2-run-instances.

Eu também tentei colocar as mesmas coisas em um formulário cloud-init, com os mesmos resultados:

#cloud-config
runcmd:
 - echo 'Woot 1!' > /home/ec2-user/woot1.txt
 - pushd /home/ec2-user/my-app-dir
 - nohup sudo -u ec2-user /home/ec2-user/my-app-dir/my_process.py &
 - echo 'Woot 2!' > /home/ec2-user/woot2.txt

Se alguém puder me dizer onde estou dando errado, agradeço.

    
por Tom Slee 10.08.2015 / 06:56

2 respostas

1

O motivo pelo qual o processo não estava em execução era que a instância Linux do Amazon EC2 é semelhante a Red Hat e há um bug / recurso nessas distros que um comando sudo requer um tty. Não há nenhum tty anexado ao ambiente quando o cloud-init é processado e, portanto, ele falha.

Uma resposta é editar etc / sudoers e alterar a linha

Defaults requiretty

para

Defaults !requiretty

Existem outras abordagens, aparentemente, mas isso funcionou para mim.

    
por 13.08.2015 / 00:57
0

Eu estou supondo que não há shell anexado a este comando.

Em vez de

- echo 'Woot 1!' > /home/ec2-user/woot1.txt

Tente

- /bin/sh -c "echo 'Woot 1!' > /home/ec2-user/woot1.txt"
    
por 10.08.2015 / 08:06