我正在尝试在 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/