2015-04-05 80 views
0

我的木偶结构如下找不到木偶在上课申请

/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?

我不是傀儡模块的维护者,所以我无法更改文件结构或布局。

有很多相关的问题,但我无法将它们与我遇到的问题联系起来。

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

你可能会显示'redis.pp'文件的内容吗? – kkamilpl 2015-04-07 07:47:39

回答

3

当你运行应用的傀儡对你site.pp文件,而不是会发生什么?您的redis.pp文件中可能没有节点定义(也不应该)。

+0

没有'node'定义实际上是'puppet apply'的典型代表。您只需编写特定于本地计算机的清单并直接应用。 – 2015-04-07 13:01:11

+0

...但是,应用'site.pp'似乎是在这个设置中预期的。 – 2015-04-07 15:03:08

2

这实际上看起来有点凌乱和令人费解。

你想要的是

  • 实际base模块
  • 定义class base/puppet/modules/base/manifests/init.pp

你也应该安排您更好地体现松import声明。如果您的Puppet版本已经够用了(我认为3.6 +),请参阅the docs

+0

就像我说的,我无法改变内容或结构。我试图让企业为我的本地虚拟机工作。我们似乎对生产/舞台中的结构没有任何问题。 – bearrito 2015-04-07 13:44:49

+0

@ bearrito,我完全误解了。对不起,不太有用。我建议@tthayer应用'site.pp'而不是'redis.pp'。 – 2015-04-07 15:02:09

+0

我很乐意创建一个模仿正确功能的外部文件,这些文件不会强制进行任何结构性更改,或者会影响其他工作流程,只允许我在本地工作(使用不带puppetserver的应用程序) – bearrito 2015-04-07 15:05:17

-1

所有的拳头,木偶都有入口清单文件。 在主模式下,条目是site.pp,并且从版本3.5中弃用了puppet deprecated,它开始自动导入指定目录中的所有清单文件。 在应用模式下,该条目是您的命令中指定的文件。

所以它在您的生产环境中正常工作,puppet master读取site.pp(包含类库)并导入节点/ * .pp(redis.pp,包含节点定义)。但是当你使用“puppet apply /puppet/manifests/nodes/redis.pp”时,puppet只是读redis.pp,没有人告诉puppet基类在哪里。