Pregunta La unidad del compañero CoreOS Systemd no puede iniciar


Tengo un servicio con esto para una unidad de apoyo y sigo recibiendo el error: [/run/fleet/units/tomcat-discovery@1.service:11] arrastrando basura, ignorando. tomcat-discovery@1.service no tiene una configuración ExecStart =, que solo está permitida para los servicios RemainAfterExit = yes. Rechazando

Al parecer, he intentado cada combinación diferente que puedo imaginar y he probado con éxito el comando desde el terminal sin ningún problema. Si elimino la primera llamada a etcdctl, el segundo comando set también funciona en el archivo de servicio sin problemas. ¿Alguna idea de a dónde me voy mal aquí?

[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

6
2018-01-13 15:33


origen




Respuestas:


Pude corregir el error usando comillas simples alrededor del comando / bin / bash -c, usando comillas dobles alrededor del formato - y doble escape del número de puerto. El comando final completo de ExecStart es:

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'

3
2018-01-13 20:46