2016-03-24 6 views
1

Im пытается автоматизировать кластер mesos только с бродягой (так что не шеф-повар, марионетка, незаменимая или что-то еще). В настоящее время у брандмауэра нет изменений/etc/mesos/zk. Я попытался повторить его с помощью cmd: "echo zk://192.168.3.2:2181,192.168.3.3:2181/mesos > /etc/mesos/zk" и srv.vm.provision "shell", inline: "docker exec -t mesoscloud-mesos-master 'echo zk://192.168.3.2:2181,192.168.3.3:2181/mesos > /etc/mesos/zk", но не из тех, что работают. Может быть, переменная MESOS_ZK используется неправильно, но у меня нет идей. Это (соответствующая часть) моего Vagrantfile:Vagrant + Mesos:/etc/mesos/zk не изменяется

# -*- mode: ruby -*- 
 
# vi: set ft=ruby :this 
 

 
require 'fileutils' 
 
require 'yaml' 
 

 
servers = YAML.load_file('servers.yml') 
 

 
$HOST_IP_1='192.168.3.2' 
 
$HOST_IP_2='192.168.3.3' 
 

 

 
Vagrant.configure(2) do |config| 
 
\t config.ssh.insert_key = false 
 
\t config.ssh.forward_agent = true 
 
\t # \t config.vm.provision "docker" 
 
\t servers.each do |server| 
 
\t \t config.vm.define server["name"] do |srv| 
 
\t \t \t srv.vm.box_check_update = false 
 
\t \t \t srv.vm.hostname = server["name"] 
 
\t \t \t srv.vm.box = "centos/7" 
 
\t \t \t srv.vm.network "private_network", ip: server["priv_ip"] 
 
\t \t \t srv.vm.network "public_network", bridge: "en2: Thunderbolt 1", ip: server["pub_ip"] 
 
\t \t \t srv.vm.synced_folder ".", "/vagrant", disabled: true 
 
\t \t \t if srv.vm.hostname == "melisandre" 
 

 
\t \t \t \t # ZOOKEEPER 
 
\t \t \t \t srv.vm.provision "docker" do |d| 
 
\t \t \t \t \t d.run "mesoscloud/zookeeper", 
 
\t \t \t \t \t \t args: "--net='host' -e SERVER_ID=1 -e ADDITIONAL_ZOOKEEPER_1=server.1=192.168.3.2:2888:3888 -e ADDITIONAL_ZOOKEEPER_2=server.2=192.168.3.3:2888:3888" 
 
\t \t \t \t end 
 

 

 
\t \t \t \t # MESOS-MASTER 
 
\t \t \t \t srv.vm.provision "docker" do |d| 
 
\t \t \t \t \t d.run "mesoscloud/mesos-master", 
 
\t \t \t \t \t \t args: "--net='host' -p 5050:5050 -e MESOS_HOSTNAME=192.168.3.2 -e MESOS_IP=192.168.3.2 -e MESOS_ZK='zk://192.168.3.2:2181,192.178.3.3:2181/mesos' -e MESOS_PORT=5050 -e MESOS_LOG_DIR=/var/log/mesos -e MESOS_QUORUM=1 -e MESOS_REGISTRY=in_memory -e MESOS_WORK_DIR=/var/lib/mesos"#,cmd: "echo zk://192.168.3.2:2181,192.168.3.3:2181/mesos > /etc/mesos/zk" 
 

 
\t \t \t \t end

Заранее спасибо

ответ

2

Если заменить cmd в виде docker run исполнения он отключает команду по умолчанию. Таким образом, вы должны сделать это составной командой (объединенной с ; или &&), которая также выполняет команду по умолчанию.

Это, скорее всего, вы должны использовать изображения докеры мезосферы (https://hub.docker.com/r/mesosphere/mesos-master и https://hub.docker.com/r/mesosphere/mesos-slave) вместо устаревших мезосгласных.

1

Если вы хотите предварительно сконфигурированное решение Vagrant (которое можно адаптировать), посмотрите на tobilg/coreos-mesos-cluster.

По умолчанию будет запущен кластер с тремя узлами CoreOS с ZooKeeper, Mesos Masters & Рабы и марафон.