使用 vagrant 生成的集群在单台机器上运行 puppet

使用 vagrant 生成的集群在单台机器上运行 puppet

我正在用 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

顺便说一句,如果可用的话,我通常会向提供商添加调试和详细选项。

相关内容