Marathon:如何在args中指定环境变量

时间:2016-08-18 13:54:03

标签: microservices mesos marathon consul

我正在尝试在每个Mesos从属节点上运行Consul容器。

使用Marathon我有以下JSON脚本:

{
    "id": "consul-agent",
    "instances": 10,
    "constraints": [["hostname", "UNIQUE"]],
    "container": {
        "type": "DOCKER",
        "docker": {
            "image": "consul",
            "privileged": true,
            "network": "HOST"
        }
    },
    "args": ["agent","-bind","$MESOS_SLAVE_IP","-retry-join","$MESOS_MASTER_IP"]
}

然而,似乎马拉松将args视为纯文本。

这就是我总是出错的原因:

==> Starting Consul agent...
==> Error starting agent: Failed to start Consul client: Failed to start lan serf: Failed to create memberlist: Failed to parse advertise address!

所以我只是想知道是否有任何解决方法,以便我可以在我的每个Mesos从属节点上启动一个Consul容器。

更新

感谢@janisz的链接。

看了下面的讨论后:

  • #3416:马拉松文件中的 args无法解析env变量

  • #2679能够指定正在运行的应用任务的主机名值

  • #1328通过REST API在每个主机上使用的配置中指定环境变量

  • #1828在应用定义中支持更多变量和变量扩展

以及Task Environment Variables上的Marathon文档。

我的理解是:

  • 目前无法在args中传递环境变量
  • 有些帖子表明可以在"cmd"中传递环境变量。但是这些环境变量是Marathon提供的任务环境变量,而不是主机上的环境变量。

如果我错了,请纠正。

0 个答案:

没有答案