Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Could not retrieve information from environment production source

I'm using puppet as my provisioner in one of my vagrant project. I'm trying to add a module for a custom bash_profile.

The module_path for puppet is set to:

 puppet.module_path = "puppet/modules"

The class for my bash_profile module looks like this:

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

Here's the file structure for my puppet structure:

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

When I run the provisioning for vagrant, I get the error

err: /Stage[main]/Bash_profile/File[/home/vagrant/bash_profile]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/bash_profile/files/bash_profile at /tmp/vagrant-puppet-1/modules-0/bash_profile/manifests/init.pp:8

I'm not sure why it can't retrieve the information. The path seems to be correct. Can anyone see what I'm missing?

like image 587
Chris Schmitz Avatar asked Jun 13 '14 20:06

Chris Schmitz


2 Answers

Yes, you are not supposed to include the literal files/ in the URL. Instead, it should just be

puppet:///modules/bash_profile/bash_profile
like image 179
Felix Frank Avatar answered Nov 14 '22 14:11

Felix Frank


You may also receive this error with recurse => true if your module name is invalid. For instance, if you have this module structure:

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

and this resource:

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

you'll get this error:

==> 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

The fix is to rename the module—for instance, naming it my_example fixes it. The rules for module names are documented but easy to miss.

like image 39
Phil Calvin Avatar answered Nov 14 '22 14:11

Phil Calvin