木偶:无法评估:无法从环境生产中检索信息

我在这里看过类似的post,但是没有解决

意图是复制代理节点上的bash脚本并执行。

SLES11SP4-118:~ # cat /etc/puppet/manifests/site.pp node default { include base } node 'sles11sp4-170.dev.insiteone.com' { class {'base':} } class base { exec { "remove yum": command => 'zypper removerepo 1', logoutput => 'true', path => '/usr/bin/' } exec { "add yum": command => 'zypper addrepo -f http://10.156.14.121/repo/RPMS/QA/ QA', logoutput => 'true', path => '/usr/bin/' } file { 'my_expect_script': ensure => 'present', source => "puppet:///modules/raj/myexpect.sh", path => '/tmp/', owner => 'root', group => 'root', mode => '0744', notify => Exec['run_my_script'], } exec { 'run_my_script': command => '/tmp/myexpect.sh', refreshonly => true, } } 

在/etc/puppet.conf中

 SLES11SP4-118:~ # vim /etc/puppet/puppet.conf [main] dns_alt_names=puppet,puppet.dev.insiteone.com server=puppet.dev.insiteone.com modulepath=/etc/puppet/modules 

我已经确定目录在puppet服务器中:

 SLES11SP4-118:~ # puppet config print modulepath /etc/puppet/modules:/usr/share/puppet/modules SLES11SP4-118:~ # ls /etc/puppet/modules/raj/ myexpect.sh SLES11SP4-118:~ # ls /usr/share/puppet/modules/raj/ myexpect.sh 

错误(puppet apply /etc/puppet/manifests/site.pp –debug):

 err: /Stage[main]/Base/File[my_expect_script]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/raj/myexpect.sh at /etc/puppet/manifests/site.pp:31 notice: /Stage[main]/Base/Exec[run_my_script]: Dependency File[my_expect_script] has failures: true warning: /Stage[main]/Base/Exec[run_my_script]: Skipping because of failed dependencies 

前两位高pipe工作正常(删除yum和添加yum)

感谢Tim Stoop(他在评论中指出)。 因此,无论何时在某个位置添加文件并添加源文件,都需要将它们放在“文件”目录中, 更重要的是文件目录不应在源文件中命名。

像我的源代码是: source => "puppet:///modules/raj/myexpect.sh"所以实际的文件需要在/etc/puppet/modules/raj/files

这在木偶文档中提到: https : //docs.puppet.com/puppet/4.9/modules_fundamentals.html#files

(我完全错过了,直到@Tim Stoop在评论中指出。

接下来, files模块中的path不正确。 你需要把整个path包括文件名。 使用ensure => 'present'傀儡会确保文件存在,否则它会创build文件。

因此:path => /tmp/myexpect.sh是正确的。

整个正确的清单如下:

 SLES11SP4-118:~ # cat /etc/puppet/manifests/site.pp node default { include base } node 'sles11sp4-170.dev.insiteone.com' { class {'base':} } class base { exec { "remove yum": command => 'zypper removerepo 1', logoutput => 'true', path => '/usr/bin/' } exec { "add yum": command => 'zypper addrepo -f http://10.156.14.121/repo/RPMS/QA/ QA', logoutput => 'true', path => '/usr/bin/' } file { 'my_expect_script': ensure => 'present', source => "puppet:///modules/raj/myexpect.sh", # Make sure file is in /etc/puppet/modules/raj/files path => '/tmp/myexpect.sh', owner => 'root', group => 'root', mode => '0744', notify => Exec['run_my_script'], } exec { 'run_my_script': command => '/tmp/myexpect.sh', refreshonly => true, } }