ฉันใช้ CoreOS เพื่อจัดตาราง systemd units กับกองยาน ฉันมีสองหน่วย ( firehose.service
และfirehose-announce.service
. ฉันพยายามที่firehose-announce.service
จะเริ่มต้นและหยุดพร้อมกับfirehose.service
. นี่คือไฟล์หน่วยสำหรับfirehose-announce.service
:
[Unit]
Description=Firehose etcd announcer
BindsTo=firehose@%i.service
After=firehose@%i.service
Requires=firehose@%i.service
[Service]
EnvironmentFile=/etc/environment
TimeoutStartSec=30s
ExecStartPre=/bin/sh -c 'sleep 1'
ExecStart=/bin/sh -c "port=$(docker inspect -f '{{range $i, $e := .NetworkSettings.Ports }}{{$p := index $e 0}}{{$p.HostPort}}{{end}}' firehose-%i); echo -n \"Adding socket $COREOS_PRIVATE_IPV4:$port/tcp to /firehose/upstream/firehose-%i\"; while netstat -lnt | grep :$port >/dev/null; do etcdctl set /firehose/upstream/firehose-%i $COREOS_PRIVATE_IPV4:$port --ttl 300 >/dev/null; sleep 200; done"
RestartSec=30s
Restart=on-failure
[X-Fleet]
X-ConditionMachineOf=firehose@%i.service
ฉันกำลังพยายามที่จะใช้BindsTo
กับความคิดที่ว่าเริ่มต้นและหยุดยังจะเริ่มต้นหรือหยุดfirehose.service
firehose-announce.service
แต่สิ่งนี้ไม่เคยเกิดขึ้นอย่างถูกต้อง หากfirehose.service
หยุดทำงานจากนั้นfirehose-announce.service
ไปที่สถานะล้มเหลว แต่เมื่อฉันเริ่มต้นfirehose.service
สิ่งที่firehose-announce.service
ไม่เริ่มต้นขึ้น
ฉันทำอะไรผิดที่นี่