即使文件存在,也缺少Puppet类

即使文件存在,也缺少Puppet类,puppet,Puppet,puppet repo的目录结构如下: . |-- data | |-- common.yaml |-- environment | |-- environment.conf | `-- hiera.yaml |-- files | `-- cdn |-- hiera | `-- hiera.yaml |-- hiera.global.yaml |-- manifests | `-- site.pp |-- modules | `-- site |-- pr

puppet repo的目录结构如下:

.
|-- data
|   |-- common.yaml
|-- environment
|   |-- environment.conf
|   `-- hiera.yaml
|-- files
|   `-- cdn
|-- hiera
|   `-- hiera.yaml
|-- hiera.global.yaml
|-- manifests
|   `-- site.pp
|-- modules
|   
`-- site
    |-- profile
    |   |-- files
    |   `-- manifests
    |       |-- appliance
    |       |   |-- base.pp
    `-- role
        `-- manifests
            |-- README.md
            `-- role1
                `-- appliance.pp
site.pp文件如下所示:

File { backup => false }


if $::custom_facts['appliance_type'] == 'Delivery' {
  include role::role0::app
}

if $::custom_facts['appliance_type'] == 'Appliance' {
  include role::role1::appliance **// line where error is occuring**
}

node default {
}
运行puppet apply命令时失败,出现以下错误:

错误:评估错误:评估函数调用时出错,在节点default-puppetmaster-centos-7.vagrantup.com上找不到default-puppetmaster-centos-7.vagrantup.com(文件:/tmp/kitchen/manifests/site.pp,第9行,第3列)的class::role::role1::appliance

应用的puppet命令:

sudo-E/opt/puppetlabs/bin/puppetlabs/tmp/kitchen/manifests/site.pp--modulepath=/tmp/kitchen/modules--fileserverconfig=/tmp/kitchen/fileserver.conf--environment=kitchen\u vagrant\u puppet--environment=/etc/puppetlabs/code/environments--hiera\u config=/tmp/kitchen/hiera.global.yaml

我不明白为什么木偶找不到这个班。该类位于角色文件夹中。目录结构是否错误

编辑:

添加
envirment.conf
文件的内容:

modulepath          = site:modules:$basemodulepath

这是否只是因为modulepath需要包含
站点
?您的清单位于
站点
中,而不是
模块

sudo -E /opt/puppetlabs/bin/puppet apply /tmp/kitchen/manifests/site.pp \
    --modulepath=/tmp/kitchen/modules:/tmp/kitchen/site \
    --fileserverconfig=/tmp/kitchen/fileserver.conf \
    --environment=kitchen_vagrant_puppet \
    --environmentpath=/etc/puppetlabs/code/environments \
    --hiera_config=/tmp/kitchen/hiera.global.yaml

为了以防万一,我也会检查
environment.conf
中的
modulepath

这仅仅是因为modulepath需要包含
站点
?您的清单位于
站点
中,而不是
模块

sudo -E /opt/puppetlabs/bin/puppet apply /tmp/kitchen/manifests/site.pp \
    --modulepath=/tmp/kitchen/modules:/tmp/kitchen/site \
    --fileserverconfig=/tmp/kitchen/fileserver.conf \
    --environment=kitchen_vagrant_puppet \
    --environmentpath=/etc/puppetlabs/code/environments \
    --hiera_config=/tmp/kitchen/hiera.global.yaml

我还要检查
environment.conf
中的
modulepath
,以防万一。

您的布局与Puppet的默认设置有很大差异。这就是为什么需要这么多命令行选项的原因之一。它偏离的方式之一是将模块放在目录
/site
,默认情况下,该目录不在模块路径上。毫无疑问,您可以通过额外的命令行选项和/或配置文件调整来解决这个问题,但也许您可以通过重新组织到Puppet自动处理的布局中来简化您的生活。站点目录是根据文档添加的,以便配置文件和角色。我不知道你在说哪些文档,但要么你误解了它们,要么它们不完整。您可以有其他模块目录,但如果有,则需要将它们添加到模块路径中。但是,对于角色和配置文件,您不需要这样做。它们所在的模块在质量上与其他模块没有区别。它们可以进入默认模块路径上的目录,例如
/modules
。。站点目录被添加到
environment.conf
文件中的模块路径中。编辑问题以同时显示
environment.conf
的内容。我将尝试在模块目录中添加角色和配置文件,并查看其效果。当我在模块文件夹中添加角色和配置文件目录时,它确实起了作用。也许我误解了文件。谢谢。您的布局与Puppet的默认设置有很大差异。这就是为什么需要这么多命令行选项的原因之一。它偏离的方式之一是将模块放在目录
/site
,默认情况下,该目录不在模块路径上。毫无疑问,您可以通过额外的命令行选项和/或配置文件调整来解决这个问题,但也许您可以通过重新组织到Puppet自动处理的布局中来简化您的生活。站点目录是根据文档添加的,以便配置文件和角色。我不知道你在说哪些文档,但要么你误解了它们,要么它们不完整。您可以有其他模块目录,但如果有,则需要将它们添加到模块路径中。但是,对于角色和配置文件,您不需要这样做。它们所在的模块在质量上与其他模块没有区别。它们可以进入默认模块路径上的目录,例如
/modules
。。站点目录被添加到
environment.conf
文件中的模块路径中。编辑问题以同时显示
environment.conf
的内容。我将尝试在模块目录中添加角色和配置文件,并查看其效果。当我在模块文件夹中添加角色和配置文件目录时,它确实起了作用。也许我误解了文件。谢谢。我已经添加了environment.conf文件的内容。谢谢。在模块路径中添加站点目录路径显式有效。不知道为什么它不能使用
environment.conf
文件。我已经添加了environment.conf文件的内容。谢谢。在模块路径中添加站点目录路径显式有效。不知道为什么它不能使用
environment.conf
文件工作