Я пытаюсь запустить контейнер Consul на каждом из моих подчиненных узлов Mesos.
С 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!
Поэтому мне просто интересно, есть ли какой-нибудь обходной путь, чтобы я мог запустить контейнер Consul на каждом из моих подчиненных узлов Mesos.
Обновление:
Спасибо @janisz за ссылку.
После просмотра следующих дискуссий:
#3416: аргументы в файле marathon не разрешают переменные env
#2679: Возможность указать значение имени хоста, на котором запущена задача приложения. на
#1328: Укажите переменные среды в конфигурации, которые будут использоваться на каждом хосте, через REST-API
#1828: Поддержка дополнительных переменных и расширение переменных в определении приложения
а также документацию Marathon по переменным среды задачи.
Я так понимаю:
- В настоящее время невозможно передать переменные среды в args
- В некоторых сообщениях указано, что можно передавать переменные среды в
"cmd"
. Но эти переменные среды являются переменными среды задач, предоставляемыми Marathon, а не переменными среды на вашем хост-компьютере.
Пожалуйста, поправьте, если я был неправ.