Puppet 在应用期间找不到类

Puppet 在应用期间找不到类,puppet,Puppet,我的木偶结构如下 /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_

我的木偶结构如下

/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模块的维护者,因此无法更改文件结构或布局

有许多相关的问题,但我无法将它们与我面临的问题联系起来

编辑1:添加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'
 }
}

对site.pp文件运行puppet apply时会发生什么情况?您的redis.pp文件中可能没有节点定义(您也不应该有)。

当您对site.pp文件运行puppet apply时会发生什么?您的redis.pp文件中可能没有节点定义(您也不应该有)。

事实上,这看起来有点混乱和复杂

你想要的是

  • 实际的
    基本
    模块
  • /puppet/modules/base/manifests/init.pp

您还应该通过更好地安排清单来释放
import
语句。如果您的Puppet版本足够新(我认为
3.6
+),请看。

这看起来确实有点混乱和复杂

你想要的是

  • 实际的
    基本
    模块
  • /puppet/modules/base/manifests/init.pp

您还应该通过更好地安排清单来释放
import
语句。如果您的Puppet版本足够新(我认为是
3.6
+),请查看。

首先,Puppet拥有条目清单文件。 在主模式下,条目为site.pp,puppet从版本3.5中弃用它,它开始自动导入指定目录中的所有清单文件。 在应用模式下,该条目在命令的文件中指定


因此,它在您的生产环境(puppet master read site.pp(包含类基)和import nodes/*.pp(redis.pp,包含节点定义)中运行良好。但是当您使用“puppet apply/puppet/manifests/nodes/redis.pp”时,puppet只是读取redis.pp,没有人告诉puppet基类在哪里。

首先,puppet拥有条目清单文件。 在主模式下,条目为site.pp,puppet从版本3.5中弃用它,它开始自动导入指定目录中的所有清单文件。 在应用模式下,该条目在命令的文件中指定


因此,它在您的生产环境(puppet master read site.pp(包含类基)和import nodes/*.pp(redis.pp,包含节点定义)中运行良好。但是当您使用“puppet apply/puppet/manifests/nodes/redis.pp”时,puppet只是读取redis.pp,没有人告诉puppet基类在哪里。

您可以显示
redis.pp
文件的内容吗?您可以显示
redis.pp
文件的内容吗?没有
节点
定义实际上是
puppet应用的典型情况。您只需编写一个特定于本地计算机的清单,并直接应用该清单……但是,是的,应用
site.pp
似乎是此设置中所期望的。没有
节点
定义实际上是
puppet应用
的典型情况。您只需编写一个特定于本地计算机的清单,并直接应用该清单……但是,是的,应用
site.pp
似乎是此设置中所期望的。正如我所说,我无法对内容或结构进行太多更改。我正在尝试让企业能够在我的本地虚拟机上工作。我们似乎对制作/登台的结构没有任何问题。@bearrito和我完全误解了这一点。对不起,我帮不了你。由于建议应用
site.pp
而不是
redis.pp
,我对@tthayer投了赞成票。我很乐意创建一个模拟正确功能的无关文件,它不会强制进行任何结构更改或影响其他工作流,只允许我在本地运行它(在不使用puppetserver的情况下使用apply)不幸的是,以目前的形式,它看起来很难从这里恢复。正如我所说的,我不能太多地改变内容或结构。我正在尝试将为企业设计的内容用于我的本地vm。我们似乎对生产/暂存中的结构没有任何问题。@bearrito和我完全误解了这一点。很抱歉没有拜因g太有帮助了。我投票支持@tthayer,因为有人建议我应用
site.pp
而不是
redis.pp
。我很乐意创建一个模拟正确功能的无关文件,它不会强制进行任何结构更改或影响其他工作流,只允许我在本地运行它(使用apply而不使用puppetserver)不幸的是,它目前的形式看起来很难从这里挽救。