upstart config para iniciar o daemon de sincronização como usuário não root

6

Estou planejando usar inosync para sincronizar dados do servidor mestre para vários servidores clientes. Eu criei um usuário chamado rsyncuser no master e no slaves com permissões de acesso e acesso ssh sem senha dos servidores master para slave.

O Inosync está funcionando quando eu o uso da linha de comando como rsyncuser.

Em seguida, quero que isso seja iniciado automaticamente quando o servidor estiver ativado. Eu percebi que o novato é o jeito de fazer isso funcionar.

Não consigo encontrar o comando inicial adequado para que isso funcione.

Aqui está o meu arquivo conf upstart. O problema parece estar rodando "inosync -d -c /etc/inosync/inosync_rsyncuser.py" como um usuário dado.

Como você pode ver, eu tentei várias opções!

description     "start inosync to sync data to other CDN Servers as rsyncuser"
console output
#start on startup
#stop on shutdown
start on (net-device-up and local-filesystems)
stop on runlevel [016]

#start on runlevel [2345]
#stop on runlevel [!2345]
#kill timeout 30
env RUN_AS_USER=rsyncuser

expect fork

script
   echo "Inosync updtart job seems to have started" >> /tmp/upstart.log
#   exec sudo -u rsyncuser -c "ls -la" >> /tmp/upstart.log 2>&1
#   LOGFILE=/var/log/logfile.'date +%Y-%m-%d'.log

#   exec su - $RUN_AS_USER -c "inosync -d -c /etc/inosync/inosync_rsyncuser.py" >> $LOGFILE 2>&1
#  exec  su -c "ls -la" >> /tmp/upstart.log 2>&1
#   emit inosync_running
end script
    
por Rudiger Wolf 28.09.2010 / 05:12

2 respostas

7

Acho que isso deve ser feito:

exec su -c command_to_execute - $RUN_AS_USER
    
por achiang 01.10.2010 / 21:40
2
start on (net-device-up IFACE!=lo and local-filesystems)
stop on runlevel [016]

respawn

exec su -c '/usr/bin/inosync -c /etc/inosync/inosync_rsyncuser.py | logger -p daemon.notice -t inosync' rsyncuser

Isso deve começar assim que a rede estiver ativa e os sistemas de arquivos locais estiverem disponíveis e parar apenas quando você desligar / reinicializar. Não há nenhuma razão para usar 'esperar fork' com inosync, já que ele não bifurca a menos que você use -d, que é idealmente como todos os serviços gerenciados iniciantes funcionariam.

O piping to logger também permite que você aproveite a configuração do seu syslog, em vez de criar outro arquivo de log em algum lugar. daemon.notice deve terminar em /var/log/daemon.log.

    
por SpamapS 28.11.2010 / 00:39

Tags