Virtual-Machines

使用 vagrant 生成的集群在單台機器上執行 puppet

  • August 28, 2013

我正在用 Vagrant 建構一個四集群機器,並使用 puppet 配置這些機器。

我想找到一種方法讓我的 puppet 腳本只在單個機器上執行。就目前而言,每個 puppet 腳本在每台機器上都以相同的方式執行。

這是我的流浪文件

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

如果將 puppet 定義移動到要對其執行 puppet 的主機的塊內,它將僅在該主機上執行。我使用類似的方法來定義一個包含一個 puppetmaster 和幾個 puppet 代理的集群。

這是一個簡單的範例,假設這將適用於您的 smdw_config 主機。刪除 puppet 節並更改 smdw_config 節,如下所示:

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

順便說一句,如果可用,我通常會向提供程序添加調試和詳細選項。

引用自:https://serverfault.com/questions/534590