我的木偶结构如下
/puppet
/manifests
/nodes
redis.pp
site.pp
/modules
site.pp类似于
class base {
include ml-basefw
include ml-users
include ml-filelimits
include repoforge
include epel
class { 'ml-yumrepo':
base_url => "http://${puppet_server}/yumrepo"
}
}
import 'nodes/*.pp'
node default {
include base
}
当我跑步时
puppet apply --modulepath=/puppet/modules:/puppet/manifests --noop --debug /puppet/manifests/nodes/redis.pp
我收到了
Error: Could not find class base for redis-1.test.ml.com on node redis-1.test.ml.com
我的文件布局是否有一些非标准的东西阻止我使用apply?
我不是puppet模块的维护者,所以我无法改变文件结构或布局。
有许多相关的问题,但我无法将它们与我遇到的问题联系起来。
Edit1:添加redis.pp
node /^redis-\d+(.stage)?(.test)?(.aws)?.ml.com$/ {
include base
include epel
class { 'redis':
package_ensure => '2.8.15-1.el6.remi',
service_ensure => 'running',
conf_bind => '0.0.0.0',
conf_port => '6379',
}
firewall { '176 allow port 6379 for redis traffic':
chain => 'INPUT',
state => ['NEW'],
dport => '6379',
proto => 'tcp',
action => 'accept'
}
}
答案 0 :(得分:3)
当您运行puppet时,会对您的site.pp文件执行什么操作?您可能在redis.pp文件中没有节点定义(也不应该)。
答案 1 :(得分:2)
事实上这看起来有点混乱和错综复杂。
你想要的是
base
模块class base
/puppet/modules/base/manifests/init.pp
您还应该通过更好地安排清单来放弃import
声明。如果您的Puppet版本已经足够(我认为3.6
+),请参阅the docs。
答案 2 :(得分:-1)
所以它在您的生产环境中工作正常,puppet master读取site.pp(包含类库)和导入节点/ * .pp(redis.pp,包含节点定义)。但是当你使用“puppet apply /puppet/manifests/nodes/redis.pp”时,puppet只读了redis.pp,没有人告诉puppet基类的位置。