11

我在我的一个流浪项目中使用 puppet 作为我的供应商。我正在尝试为自定义 bash_profile 添加一个模块。

module_pathfor puppet 设置为:

 puppet.module_path = "puppet/modules"

我的 bash_profile 模块的类如下所示:

class bash_profile
{
    file
    {
        "/home/vagrant/bash_profile":
            ensure => present,
            source => "puppet:///modules/bash_profile/files/bash_profile"
    }
}

这是我的木偶结构的文件结构:

puppet
| manifests
| | phpbase.pp // my main manifest file that has includes for modules
| modules
| | bash_profile
| | | files
| | | | bash_profile // the actual bash_profile file I want to ensure is present on my VM
| | | manifests
| | | | init.pp // the init file included for the bash_profile class

当我为 vagrant 运行配置时,出现错误

错误:/Stage[main]/Bash_profile/File[/home/vagrant/bash_profile]:无法评估:无法从 /tmp 的环境生产源 puppet:///modules/bash_profile/files/bash_profile 检索信息/vagrant-puppet-1/modules-0/bash_profile/manifests/init.pp:8

我不确定为什么它无法检索信息。路径似乎是正确的。谁能看到我错过了什么?

4

3 回答 3

25

是的,您不应该files/在 URL 中包含文字。相反,它应该只是

puppet:///modules/bash_profile/bash_profile
于 2014-06-13T21:09:28.650 回答
1

recurse => true如果您的模块名称无效,您也可能会收到此错误。例如,如果你有这个模块结构:

modules ├── my-example │   └── files │   └── example │   └── test.txt

这个资源:

file { "/tmp/example":
  ensure => directory,
  recurse => true,
  source => "puppet:///modules/my-example/example",
}

你会得到这个错误:

==> default: Info: Could not find filesystem info for file 'my-example/example' in environment production ==> default: Error: /Stage[main]/Main/Node[default]/File[/tmp/example]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///my-example/example

解决方法是重命名模块——例如,命名它会my_example修复它。模块名称的规则已记录在案,但很容易错过。

于 2017-04-07T14:04:29.787 回答
0

需要关心的事情

  1. Puppet URI 格式puppet:///modules/name_of_module/filename
  2. 模块目录中存在的文件服务器目录

视频是解决错误的分步指南

于 2015-05-24T09:29:00.937 回答