我有一个CoreOS集群,我有一个只运行Docker容器的SystemD服务。 然而,为了灵活性的目的,我想要的Dockerregistry的容器从服务启动时被发现被发现,我很容易使用Etcd(从CoreOS项目的节点发现系统)。
所以,我试着在普通的terminal,只是给了我这样一个命令/usr/bin/etcdctl get /services/registry来获取/usr/bin/etcdctl get /services/registry的当前IP地址。 它的工作原理! 但是从SystemD服务来说,命令是以键入的方式返回的,而不是像有人在使用反引号的Shell脚本中那样执行。 我尝试了反引号, $()和${}语法,但是命令仍然按原样返回。
如果有人有一个build议,我正在采取:)谢谢!
如果你让你的ExecStart使用/bin/sh -c "echo $(etcdctl ls /)" ,它将以你所希望的方式执行。
这是一个完整的单元文件利用这个: https : //github.com/coreos/unit-examples/blob/master/simple-fleet/apache-discovery.2.service#L6