gpt4 book ai didi

puppet 找不到类(class)

转载 作者:行者123 更新时间:2023-12-01 04:33:51 25 4
gpt4 key购买 nike

嗨,我是 puppet 的新手,我正在尝试创建一个测试类,但是当我运行 puppet apply-t 时,我收到错误 Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::heroes for
在我的测试目录下我有

.
├── examples
│   ├── init.pp
│   └── superhero.pp
└── manifests
├── init.pp
└── superhero.pp

2 directories, 4 files

在 list 下的 superhero.pp 中,代码读取
class heroes {
user { 'thor':
ensure => present,
}
}

在我的 superhero.pp 示例下,代码读取
include heroes

不知道为什么当我在示例下运行 puppet apply --noop superheroes.pp 时会出现错误?

这是我在模块下的完整树
├── hosts
│   ├── examples
│   │   └── init.pp
│   └── manifests
│   └── init.pp
├── nginx
│   ├── examples
│   │   └── init.pp
│   ├── files
│   │   ├── default.conf
│   │   ├── index.html
│   │   └── nginx.conf
│   ├── index.html
│   └── manifests
│   ├── index.html
│   └── init.pp
├── test
│   ├── examples
│   │   ├── admins.pp
│   │   ├── init.pp
│   │   └── superhero.pp
│   └── manifests
│   ├── admins.pp
│   ├── init.pp
│   └── superhero.pp
└── users
├── examples
│   ├── admins.pp
│   └── init.pp
└── manifests
├── admins.pp
└── init.pp

最佳答案

我认为可能有两个问题

  • 首先是在 puppet apply superheroes.pp 目录下运行 examples 时,它​​不知道去哪里寻找其他模块(比如 heroesinclude )。要知道在哪里寻找模块, you need to give it a modulepath :

    puppet apply --modulepath=/path/to/modules --noop superhero.pp
  • 另一个问题是您声明的 heroes 类的位置位于 test/manifests/superhero.pp 中。 herehere 描述了 Puppet 尝试查找类的位置的规则。除非你做一些不太常见的事情,比如在另一个类中定义一个类,否则 puppet 将使用以下规则来定位类:
  • 第一个段(段由 :: 分隔)标识模块。
  • 如果只有一个段,则文件名是 init.pp ,否则文件名是带有 .pp 扩展名的最后一个段
  • 中间的段表示manifests目录下的子目录。
  • puppet 会看到的路径是
    <modulepath>/<module name>/manifests/<subdirectories>.../<file name>.pp

  • 以下是文档中的示例:
        == class name ==        == path ==
    apache <module path>/apache/manifests/init.pp
    apache::mod <module path>/apache/manifests/mod.pp
    apache::mod::passenger <module path>/apache/manifests/mod/passenger.pp

    回到您的问题:在 include heroes 上,puppet 将查看 <modulepath>/heroes/manifests/init.pp 。相反,要使 puppet 在 test/manifests/superhero.pp 中看起来,您需要包含类 test::superhero

    关于 puppet 找不到类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31882502/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com