centos - puppet 4.0 vagrant 模块丢失

标签 centos vagrant puppet

我正在尝试在 vagrant 中使用 puppet 模块。
我的盒子正在运行 puppet 4.0

我正在使用以下方式安装模块:

if [ ! -d /etc/puppet/modules/ ]; then 
    puppet module install puppetlabs-java
fi

site.pp我有:
class { 'java': 
    distribution => 'jdk',
} 

我不断收到关于 could not find declared class java 的错误消息
为什么 puppet 找不到我的模块?
/etc/puppet/modules/不是默认路径吗?

Vagrant 文件
Vagrant.configure(2) do |config|
  config.vm.box = "bento/centos-7.2"
  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.memory = "8192"
  end
  config.vm.provision :shell, :path => "upgrade_puppet.sh"
  config.vm.provision :shell, :path => "puppet_modules.sh"

  config.vm.provision :puppet do |puppet|
    puppet.options = '--verbose --debug'
    puppet.environment_path = "puppet/environments"
    puppet.environment = "production"  
  end

end

最佳答案

现在已提供 Vagrantfile 更新答案

puppet 4 和 directory environments 中的位置已更改现在默认使用。

因此,您使用 puppet 配置器的方式是正确的。但是,vagrant 会根据您的 Vagrantfile 将它需要的所有目录上传到 guest :
/tmp/vagrant-puppet/环境/生产

当 Vagrant 调用 puppet apply 时,它将在以下位置寻找它需要的模块:
/tmp/vagrant-puppet/环境/生产/模块

并且您的主机上不存在该模块目录。

您可以将 if block 更改为:

if [ ! -d /vagrant/puppet/environments/production/modules ]; then
    puppet module install puppetlabs-java --modulepath /vagrant/puppet/environments/production/modules
fi

/vagrant 在主机和 guest 之间共享。这将在您的主机上安装 java 模块及其依赖项:
puppet
|
+--environments
   +
   -- production
      |
      + -- manifests
      |    +
      |    -- site.pp
      |
      + -- modules
           +
           -- java
           +
           -- stdlib

当您进行 vagrant up 时,此内容将上传到以下主机:
/tmp/vagrant-puppet

根据您的 Vagrantfile 测试和确认。

关于centos - puppet 4.0 vagrant 模块丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955440/

相关文章:

centos - 阻止依赖包在 yum history undo 命令中被删除

bash - 使用一个 bash 命令删除多个 rpm 包

centos - Centos 7 中的 CPP-REST-SDK

ruby - Vagrantfile ruby​​ 语法解释

puppet 重复声明: Class[Mongodb] is already declared; cannot redeclare

centos - 在 puppet 中调试失败 'boost::locale::conv::invalid_charset_error'

amazon-web-services - 如何检测 puppet 运行是否完成

centos - 用于网络的 phpMyAdmin

vagrant - packer + ansible,如何指定库存文件

vagrant - 使用 vagrant 设置虚拟主机