从puppet master到代理的文件复制失败

时间:2016-08-26 23:49:25

标签: puppet

我正在尝试从puppet master到代理进行简单的文件复制。

  [root@****************** manifests]# cat site.pp

    file {'/home/ec2-user/my_bash_script.sh':
    source => "puppet:///modules/mymodule/my_bash_script.sh",
    mode => '755',
    }

请找出错误。

 [root@ip-***********/]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for ip-10-20-1-137.dev.uberops.net
Info: Applying configuration version '1472255014'
Error: /Stage[main]/Main/File[my_bash_script.sh]: Could not evaluate: 
Could not retrieve information from environment production source(s)   
puppet:///modules/mymodule/my_bash_script.sh
Notice: Finished catalog run in 0.06 seconds

任何人都可以告诉我这里缺少什么。

3 个答案:

答案 0 :(得分:2)

由于您使用的是Puppet> = 3.7,因此您需要将目录环境用于您自己的模块。 /etc/puppet/modules/目录或$basemodulepath用于未声明的基本模块,如stdlib,lvm等,而是具有引用的类型,函数等。

将您的模块从/etc/puppet/modules/移至/etc/puppet/environments/'environment'/modules客户端相应的目录环境,以解决您的问题。

其他信息:

对于Puppet Enterprise 3.8,这将是/etc/puppetlabs/puppet/environments/'environment'/modules。对于Puppet 4 Enterprise和非Enterprise,这将是/etc/puppetlabs/code/environments/'environment'/modules

使用生产的默认目录环境,对于您的情况,这将是/etc/puppet/environments/production/modules

答案 1 :(得分:1)

Could not retrieve information from environment production source(s) 此错误表明,puppet无法找到您安抚的文件。 请仔细检查您提供的路径以及文件是否存在。

常规文件结构如下:

-/etc/puppet -/etc/puppet/manifest/ -/etc/puppet/files -/etc/puppet/modules

如果您已将模块目录设置在其他位置(/ modules / mymodule / files / your-file-here),那么您的文件路径将是; puppet:///modules-directory/modules-name/file-namepuppet:///modules/mymodule/your-file-here

答案 2 :(得分:1)

网址puppet:///modules/mymodule/my_bash_script.sh对应于相对于适用模块路径的文件mymodule/files/my_bash_script.sh。该文件必须存在并且可由master / puppetserver进程读取。可能产生这种错误的最常见问题是

  • 您错误拼写了文件名
  • 您已将该文件放在错误的目录中
  • 所有权/权限/ ACL / SELinux上下文和策略不允许主机读取文件