我有一个Vagrantfile,定义了两个VM。我想用木偶大师来配置那些。当我只有一个VM时,我可以使用
config.vm.provision "puppet_server" do |puppet|
puppet.puppet_server = "puppet.srv"
puppet.puppet_node = config.vm.hostname
puppet.client_cert_path = "../puppet/ssl/ca/signed/#{config.vm.hostname}.pem"
puppet.client_private_key_path = "#{config.vm.hostname}.key"
puppet.options = "--test"
end
我想为这两个虚拟机重用此块,但由于每个虚拟机的client_cert_path和client_private_key_path需要不同,因此无法重复使用。
当我尝试使用这些设置执行Vagrantfile时,我得到了
本机配置有误。请修理 出现以下错误并再试一次:
puppet server provisioner:
- 找不到指定的客户端证书路径
- 找不到指定的客户端私钥路径
- " puppet_node"
指定客户端证书或密钥时是必需的
这让我相信config.vm.hostname
未定义
如何在不重复代码块的情况下实现这一目标?
答案 0 :(得分:2)
我在wchar_t
阻止后添加了Helper
类:
Vagrant.configure
然后为每个vms
调用Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# regular configuration here
end
class Helper
def self.provision_puppet(vm)
vm.provision "puppet_server" do |puppet|
puppet.puppet_server = "puppet.test"
puppet.puppet_node = vm.hostname
puppet.client_cert_path = "../puppet/ssl/ca/signed/#{vm.hostname}.pem"
puppet.client_private_key_path = "ssl/#{vm.hostname}.key"
puppet.options = "--test"
end
end
end
Helper.provision_vm