这可能只是一个基本的问题,但我找不到解决办法。我建立了一个环境,在这里我想要使用由puppetlabs提供的apache模块。
我的傀儡版本是3.7.2
目录树:
.
├── environments
│ └── test
│ ├── environment.conf
│ ├── manifests
│ │ └── site.pp
│ └── modules
│ ├── apache
│ │ └── manifests
│ │ ├── init.pp
│ │ └── vhost_basic.pp
│ └── update
│ └── manifests
│ └── init.pp
└── VagrantfileVagrantfile中的提供程序如下所示:
config.vm.provision :puppet do |puppet|
puppet.environment_path = "environments"
puppet.environment = "test"
puppet.options = ['--verbose']
end我的site.pp:
Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }
include update
node 'localhost' {
class { 'apache': } # use apache module
apache::vhost { 'example.com': # define vhost resource
port => '80',
docroot => '/var/www/html'
}
}在apaches (目录) init.pp中,我只有include apache。我通过puppet module install puppetlabs-apache安装了apache模块。它也存储在home/user/.puppet/modules中。我还通过sudo安装了模块(因为我在某个地方读到它会产生不同的效果)。但是当我运行vagrant provision时,它说:
==> default: Running provisioner: puppet...
==> default: Running Puppet with environment test...
==> default: Error: Evaluation Error: Error while evaluating a Resource Statement, Could not find declared class apache at /tmp/vagrant-puppet/environments/test/manifests/site.pp:16:3 on node localhost我在这里错过了什么?
编辑:
puppet config print |grep path的结果是:
path = none
environmentpath =
basemodulepath = /home/user/.puppet/modules:/usr/share/puppet/modules
modulepath = /home/user/.puppet/modules:/usr/share/puppet/modules
factpath = /home/user/.puppet/var/lib/facter:/home/user/.puppet/var/facts发布于 2016-11-22 10:12:39
您的environment.conf是不正确的,因为您在本地安装了模块,它们将在/vagrant目录下的VM中共享,因此您应该引用它。(当您指示傀儡提供程序块中的/etc/puppet路径时,它们将在您的puppet.modules目录中共享)
不过,我建议添加一个简单的shell提供程序,它将为您安装模块(并管理sudo部分)--在您的迷走片文件中(在傀儡提供程序之前)。
config.vm.provision :shell, path: "/path/to/script.sh"在你的script.sh里
#!/bin/bash
puppet module install puppetlabs-apache --version 1.10.0这将把模块安装在/etc/傀儡实验室..。所以你可以在你的environment.conf中引用这个
modulepath = /etc/puppetlabs/code/environments/production/modules:$basemodulepathhttps://stackoverflow.com/questions/40738690
复制相似问题