Unidade sidekick CoreOS Systemd incapaz de iniciar

6

Eu tenho um serviço com isso para uma unidade de sidekick e continuo recebendo o erro: [/run/fleet/units/[email protected]:11] Arrastando lixo, ignorando. [email protected] não possui a configuração ExecStart =, que é permitida somente para serviços RemainAfterExit = yes. Recusando-se.

Eu aparentemente tentei todas as combinações diferentes em que posso pensar e testei com sucesso o comando do terminal sem problemas. Se eu remover a primeira chamada para o etcdctl, o segundo comando set também funcionará no arquivo de serviço sem problemas. Alguma idéia de onde eu estou errado aqui?

[Unit]
Description=Tomcat web server etcd registration

# Requirements
Requires=etcd.service
Requires=tomcat@%i.service

# Dependency ordering and binding
After=etcd.service
After=tomcat@%i.service
BindsTo=tomcat@%i.service

[Service]

# Get CoreOS environmental variables
EnvironmentFile=/etc/environment

# Start

ExecStart=/bin/bash -c "\
while true; do \
    etcdctl set /services/tomcat/tomcat-%i/ip ${COREOS_PRIVATE_IPV4}:$(docker inspect --format='{{(index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort}}' tomcat.%i) --ttl 180; \
    etcdctl set /services/bind/tomcat-%i ${COREOS_PRIVATE_IPV4} --ttl 180; \
  sleep 60; \
done"

# Stop
ExecStop=/usr/bin/etcdctl rm --recursive /services/tomcat/tomcat-%i

[X-Fleet]
# Schedule on the same machine as the associated Apache service
MachineOf=tomcat@%i.service
    
por Brian 13.01.2015 / 16:33

1 resposta

3

Consegui corrigir o erro usando aspas simples ao redor do comando / bin / bash -c, usando aspas duplas em torno do formato - e escape duas vezes o número da porta. O último comando ExecStart completo é:

ExecStart=/bin/bash -c '\
while true; do \
  etcdctl set /services/tomcat/tomcat-%i/ip ${COREOS_PRIVATE_IPV4}:$(docker inspect --format="{{(index (index .NetworkSettings.Ports \"8080/tcp\") 0).HostPort}}" tomcat.%i) --ttl 180; \
  etcdctl set /services/bind/tomcat-%i ${COREOS_PRIVATE_IPV4} --ttl 180; \
sleep 60; \
done'
    
por 13.01.2015 / 21:46