我正在用 Vagrant 构建一个四集群机器,并使用 puppet 配置这些机器。
我想找到一种方法让我的 Puppet 脚本仅在一台机器上运行。目前,每个 Puppet 脚本在每台机器上的运行方式都相同。
这是我的 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
答案1
如果您将 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
顺便说一句,如果可用的话,我通常会向提供商添加调试和详细选项。