ec2 upstart, qual é o comando 'start on' para esperar pela rede

4

Esta é a minha primeira vez com o upstart e estou usando o EC2.

os/upstart = aws base AMI latest version - upstart-0.6.5-13.3.13.amzn1.x86_64

Não consigo executar o script a seguir ao aguardar a inicialização da rede. Ele funcionará se você usar o padrão

 start on runlevel [2345]
 stop on runlevel [!2345]

Eu também tentei várias combinações de

start on filesystem and net-device-up IFACE=eth0
start on filesystem and net-device-up IFACE!=lo

Qualquer sugestão seria grata

description "test for on network start"


start on (started network-interface
      or started network-manager
      or started networking)

stop on (stopping network-interface
     or stopping network-manager
     or stopping networking)


script
    touch /home/ec2-user/myFile.txt
end script 
    
por art vanderlay 20.06.2014 / 22:37

2 respostas

2

Upstart é um sistema baseado em eventos. Para que o seu trabalho seja executado em um estágio correto, pode ser necessário aguardar eventos específicos emitidos por outro (s) trabalho (s) de inicialização.

As soluções possíveis serão diferentes de sistema para sistema e dependerão de como as tarefas iniciais são definidas e de quais eventos elas emitem. Pode também depender da versão inicial instalada no sistema.

Por favor, note que o upstart pode não gravar seus logs em /var/log/upstart . Versões anteriores podem usar syslogd , enquanto as mais novas têm maior probabilidade de gravar logs em /var/log/upstart .

Abaixo, a solução funcionará apenas no tipo de sistema mencionado na pergunta:

os/upstart = aws base AMI latest version - upstart-0.6.5-13.3.13.amzn1.x86_64

Neste sistema, o upstart não registrou o job echo em nenhum lugar. Então, essa parte pode exigir configuração extra.

Definição do trabalho:

description "testjob"

start on started elastic-network-interfaces

script
        echo $(ping -c 1 serverfault.com) > /var/log/testjob.log
end script

Teste em uma instância real do EC2:

# cat /var/log/testjob.log 
PING serverfault.com (198.252.206.140) 56(84) bytes of data. 64 bytes from stackoverflow.com (198.252.206.140): icmp_seq=1 ttl=51 time=72.9 ms --- serverfault.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 73ms rtt min/avg/max/mdev = 72.950/72.950/72.950/0.000 ms
    
por 20.06.2014 / 23:12
2

Seu exemplo é realmente próximo.

O Amazon Linux chama seu serviço de rede network . Portanto, se o aplicativo / serviço que você está tentando controlar com o upstart requer uma conexão de rede, faça o seguinte:

start on (runlevel [345] and started network)
stop on (runlevel [!345] or stopping network)

Você não precisa precisar dos bits de nível de execução, mas não é uma má idéia limitar o serviço a ser executado, dependendo do ambiente de nível de execução.

    
por 13.11.2014 / 00:32