木偶4.0流浪汉模块缺失

时间:2016-03-12 08:29:56

标签: centos 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的错误 为什么木偶不能找到我的模块?

/etc/puppet/modules/是默认路径吗?

流浪文件

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

3 个答案:

答案 0 :(得分:3)

现在已经提供了Vagrantfile的更新答案

木偶4中的位置已更改,默认情况下directory environments正在使用中。

所以你如何使用木偶供应商是正确的。但是,vagrant会根据您的Vagrantfile将所需的所有目录上传到guest虚拟机: 的/ tmp /流浪木偶/环境/生产

当Vagrant调用puppet时,它将寻找它所需的模块: 的/ tmp /流浪木偶/环境/生产/模块

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

您可以将if块更改为:

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

/ vagrant在主机和来宾之间共享。这将在下面的主机上安装java模块及其依赖项:

puppet
|
+--environments
   +
   -- production
      |
      + -- manifests
      |    +
      |    -- site.pp
      |
      + -- modules
           +
           -- java
           +
           -- stdlib

当您完成流浪时,此内容将上传到主机:

/tmp/vagrant-puppet

根据您的Vagrantfile进行测试和确认。

答案 1 :(得分:0)

正如Jaxim所提到的那样,因为默认目录位置在较新版本的Puppet中已经改变。

如果您对使用Puppet自动安装模块感兴趣,我推荐使用R10K vagrant插件,您可以指定模块的版本并使更新更容易,并允许您下载不在伪造,比如git repos。

https://github.com/jantman/vagrant-r10k

答案 2 :(得分:0)

有点晚了,但我正在从Chef转到Puppet(公司政策,不要问!:))并遇到完全相同的情况并且来自Chef背景我拒绝“污染”我的项目文件夹有这么多Puppet特定的东西。在我看来,我只需要Vagrantfile而不需要其他内容。

我也得到了“无法在/ tmp / vagrant-puppet / environments / production中找到声明的类java”错误消息。所以,经过多次搞乱后,我发现在puppet.options中你可以提供在命令行调用puppet apply时通常会提供的任何参数。

因此,如果有任何帮助尝试修改Vagrantfile中的puppet.options,如下所示:

config.vm.provision :puppet do |puppet|
  puppet.options = '--verbose --modulepath=/etc/puppetlabs/code/environments/production/modules'
  puppet.environment_path = "puppet/environments"
  puppet.environment = "production"  
end

这将有助于Puppet找到自己的鼻子而不是认为/ tmp文件夹中的所有内容都可用,但模块已经安装在自己的文件夹位置。