首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >木偶无法从已安装模块apache中找到类

木偶无法从已安装模块apache中找到类
EN

Stack Overflow用户
提问于 2016-11-22 09:55:23
回答 1查看 1.1K关注 0票数 1

这可能只是一个基本的问题,但我找不到解决办法。我建立了一个环境,在这里我想要使用由puppetlabs提供的apache模块。

我的傀儡版本是3.7.2

目录树:

代码语言:javascript
复制
.
├── environments
│   └── test
│       ├── environment.conf
│       ├── manifests
│       │   └── site.pp
│       └── modules
│           ├── apache
│           │   └── manifests
│           │       ├── init.pp
│           │       └── vhost_basic.pp
│           └── update
│               └── manifests
│                   └── init.pp
└── Vagrantfile

Vagrantfile中的提供程序如下所示:

代码语言:javascript
复制
config.vm.provision :puppet do |puppet|  
  puppet.environment_path = "environments"  
  puppet.environment = "test"  
  puppet.options = ['--verbose']
end

我的site.pp:

代码语言:javascript
复制
 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时,它说:

代码语言:javascript
复制
 ==> 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的结果是:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-22 10:12:39

您的environment.conf是不正确的,因为您在本地安装了模块,它们将在/vagrant目录下的VM中共享,因此您应该引用它。(当您指示傀儡提供程序块中的/etc/puppet路径时,它们将在您的puppet.modules目录中共享)

不过,我建议添加一个简单的shell提供程序,它将为您安装模块(并管理sudo部分)--在您的迷走片文件中(在傀儡提供程序之前)。

代码语言:javascript
复制
config.vm.provision :shell, path: "/path/to/script.sh"

在你的script.sh

代码语言:javascript
复制
#!/bin/bash

puppet module install puppetlabs-apache --version 1.10.0

这将把模块安装在/etc/傀儡实验室..。所以你可以在你的environment.conf中引用这个

代码语言:javascript
复制
modulepath = /etc/puppetlabs/code/environments/production/modules:$basemodulepath
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40738690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档