Executando o fantoche em uma única máquina usando um cluster produzido pelo vagrant

2

Eu estou construindo uma máquina de quatro clusters com o Vagrant e provisionando essas máquinas usando o fantoche.

Eu quero encontrar uma maneira de fazer com que meus scripts de marionetes sejam executados somente em uma máquina individual. Tal como está agora, cada script de fantoche é executado de forma idêntica em todas as máquinas.

Aqui está o meu Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.define "Greenplum setup"
  config.vm.box = "lucid64"

config.vm.provider :virtualbox do |v, override|
  override.vm.box_url = "http://files.vagrantup.com/lucid64.box"
  v.customize ["modifyvm", :id, "--memory", "256"]
end

config.vm.provision :puppet do |puppet|
  puppet.manifests_path = "manifests"
  puppet.manifest_file  = "base-hadoop.pp"
  puppet.module_path = "modules"
end

config.vm.define :smdw do |smdw_config|
  smdw_config.vm.network :private_network, ip: "192.168.2.11"
  smdw_config.vm.hostname = "smdw"
end

config.vm.define :sdw1 do |sdw1_config|
  sdw1_config.vm.network :private_network, ip: "192.168.2.12"
  sdw1_config.vm.hostname = "sdw1"
end

config.vm.define :sdw2 do |sdw2_config|
  sdw2_config.vm.network :private_network, ip: "192.168.2.13"
  sdw2_config.vm.hostname = "sdw2"
end

 config.vm.define :mdw do |mdw_config|
  mdw_config.vm.network :private_network, ip: "192.168.2.10"
  mdw_config.vm.hostname = "mdw"
end

end
    
por smaccoun 28.08.2013 / 21:00

1 resposta

2

Se você mover a definição de fantoches dentro do bloco para o host que deseja executar o fantoche, ele será executado apenas nesse host. Eu uso um método semelhante para definir um cluster com um mestre de marionetes e vários agentes de marionetes.

Aqui está um exemplo rápido supondo que isso seria para o seu host smdw_config. Remova a estrofe dos fantoches e mude a estrofe smdw_config conforme abaixo:

config.vm.define :smdw do |smdw_config|
  smdw_config.vm.network :private_network, ip: "192.168.2.11"
  smdw_config.vm.hostname = "smdw"
  smdw_config.vm.provision :puppet do |puppet|
    puppet.options        = '-d -v'
    puppet.manifests_path = "manifests"
    puppet.manifest_file  = "base-hadoop.pp"
    puppet.module_path = "modules"
  end
end

BTW Eu costumo adicionar as opções de depuração e verbose aos provedores, se disponíveis.

    
por 28.08.2013 / 22:02