【问题标题】:Vagrant+Puppet puppet.module_path not workingVagrant+Puppet puppet.module_path 不工作
【发布时间】:2025-11-26 15:30:01
【问题描述】:

所以我的 Vagrant 文件是这样设置的:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "hashicorp/precise64"

  config.vm.provision "puppet" do |puppet|
    puppet.manifests_path = "manifests"
    puppet.manifest_file  = "site.pp"
    puppet.module_path = "modules"
    puppet.options = "--verbose --debug"
  end
end

现在当我 vagrant ssh 进入我的虚拟机然后运行 ​​puppet module install puppetlabs-apache 时,我收到以下错误:

Error: Could not install module 'puppetlabs-apache' (latest) Directory /home/vagrant/.puppet/modules does not exist

所以我尝试的是:

mkdir -p /home/vagrant/.puppet/modules

接着是:

puppet module install puppetlabs-apache

它成功了!

但是模块文件没有显示在我在 Vagrantfile 中设置的 "modules" 目录下的主机中。所以我猜puppet.module_path 不起作用..?

谢谢:)

【问题讨论】:

  • 您是否尝试过与root 一样运行puppet module 而不是vagrant 用户?
  • 是的。然后它说/etc/puppet/modules 不存在。

标签: vagrant puppet vagrantfile


【解决方案1】:

在 VM 中调用 puppet 与 Puppet 不同,因为它用于从主机进行配置。

Vagrant 使用的 Puppet 资源是 Vagrant 项目的一部分。如您所见,VM 内的 Puppet 命令使用任一

  • ~/.puppet 中的本地 Puppet 配置和资源或
  • /etc/puppet 中的全球资源

主机和虚拟机之间不共享 Puppet 配置。

【讨论】:

  • 那我该如何安装 puppet 模块呢?
  • 如果您在配置期间需要模块,请安装它们in your vagrant project。配置完成后,您可以在 VM 中使用 Puppet。需要在那里再次安装所需的模块。