无法评估:无法从环境引导程序源检索信息

无法评估:无法从环境引导程序源检索信息

感觉自己完全是一个傀儡新手(我承认我很生疏:-)

所以我的 manifest/site.pp 文件包含。

 file {"/tmp/findme.txt":
    source => "puppet:///modules/concat/concatfragments.rb"
  }


  file { "/etc/pupppetlabs/code/":
    path => "/etc/puppetlabs/code/",
    source  => "puppet:///modules/puppetEnv/code/",
    recurse => true
  }

第一个文件复制工作正常。我在 /tmp/findme.txt 中找到了该文件,但第二个文件复制(实际上是目录复制)不起作用。它得到了以下错误

==> puppetmaster: Error: /Stage[main]/Main/Node[puppetmaster]/File[/etc/pupppetlabs/code/]: Could not evaluate: Could not retrieve information from environment bootmaster source(s) puppet:///modules/puppetEnv/code

其他信息。

来自我的 Vagrantfile

 pm.vm.provision "puppet" do |puppet|
   # puppet.options = "--verbose --debug"
    puppet.environment_path = "code/environments"
    puppet.environment = "bootmaster"
  end

查看 vm 上生成的 /tmp/vagrant-puppet 目录(vagrant 放置 puppet 文件的地方),一切看起来都很好。

[vagrant@puppetmaster vagrant-puppet]$ tree -d
.
├── environments
│   ├── bootmaster
│   │   ├── manifests
│   │   └── modules
│   │       ├── baseconfig
│   │       │   └── manifests
│   │       ├── concat
│   │       │   ├── files
│   │       │   ├── lib
. . . 
│   │       ├── puppetEnv
│   │       │   ├── files
│   │       │   │   └── code
│   │       │   │       └── environments
│   │       │   │           └── test
│   │       │   │               ├── manifests
│   │       │   │               └── modules

答案1

您的问题看起来是路径中的尾部斜杠。

您也不需要指定,path因为它是从资源名称继承的,并且最好明确地ensure指出它是一个目录,以提高代码的可读性。

例子:

file { '/etc/pupppetlabs/code':
  ensure  => directory,
  source  => 'puppet:///modules/puppetEnv/code',
  recurse => true,
}

相关内容