Soru CoreOS Systemd sidekick ünitesi başlatılamıyor


Bir yan birim birimi için bununla bir servisim var ve hatayı almaya devam ediyorum: [/run/fleet/units/tomcat-discovery@1.service:11] Çöpleri göz ardı etmek. tomcat-discovery@1.service hiçbir ExecStart = ayarı vardır, sadece RemainAfterExit = yes hizmetleri için izin verilir. Reddeden.

Ben düşünebildiğim her bir kombinasyonu denedim ve problemsiz terminali başarıyla test ettim. İlk çağrıyı etcdctl'ye kaldırırsam ikinci set komutu da servis dosyasında sorunsuz çalışır. Nerede yanlış gittiğime dair bir fikrin var mı?

[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


Menşei




Cevaplar:


Hatayı, / bin / bash -c komutunun etrafındaki tek tırnaklar kullanarak, --format etrafında çift tırnak kullanarak ve bağlantı noktası numarasından iki kez çektim. Son tam ExecStart komutu:

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