CoreOSを使用して、フリートでsystemdユニットをスケジュールしています。私は2つのユニットを持っている(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
起動しません。
ここで何が間違っていますか?