迁移木偶代码到木偶4:问题与类

我们正在将我们的木偶代码从3.5.7迁移到4.5.2

在申请清单时,我收到以下错误

  Error: Failed to apply catalog: Parameter unless failed on Exec[sh /home/agile/svncheckout.sh]: 'test -f /home/agile/subversion.done' is not qualified and no path was specified. Please qualify the command or specify a path. at /apps/wps/puppetlabs/code/environments/production/manifests/classes/subversion.pp:17 

主要代码如下:

 node 'Node-002' { include user_default include standard include subversion # include java include sybase # include eclipse # include oxygen $fqdn="Node-002.wiley.com" file { "/home/agile/properties": ensure => present, owner => agile, group => agile, source => "puppet://puppet/templates/${fqdn}/properties", } file { "/home/agile/.bashrc": ensure => present, owner => agile, group => agile, source => "puppet://puppet/files/.bashrc", require => Class['sybase'], } file { "/home/agile/setup_firefox3v622.sh": ensure => present, owner => agile, mode => "755", require => Class['subversion'], source => "puppet://puppet/scripts/setup_firefox3v622.sh } } 

subversion.pp类如下

  class subversion { package {'subversion': ensure => installed, } file {'/home/agile/svncheckout.sh': ensure => present, group => agile, mode => "755", source => "puppet://puppet/scripts/svncheckout.sh", require => [ Package['subversion'], Class['user_default'] ], before => [Class['apache1'], Class['sybase']], } exec { "sh /home/agile/svncheckout.sh": user => agile, timeout => 0, logoutput => true, #path => "/usr/sbin:/usr/bin:/bin", require => [ Package['subversion'], Class['user_default'], File['/home/agile/svncheckout.sh'] ], before => [ Class['apache1'], Class['sybase'] ], unless => "test -f /home/agile/subversion.done", } 

}

它看起来像svncheckout.sh没有被复制到/home/agile/svncheckout.sh位置。

代码configuration如下puppet.conf:codedir = / app / zama / puppetlabs / code

基于此,我将source参数中定义的scripts,files and templates复制到以下位置

  $ls environments files modules scripts templates $pwd /app/zama/puppetlabs/code 

我想我不确定在哪里放置thoe文件,根据上面的source清单。

你没有包含你所有的subversion.pp,但看起来像你有如下的东西:

 exec { 'sh /home/agile/svncheckout.sh': unless => 'test -f /home/agile/subversion.done', ... } 

错误是test命令不合格。 将其更改为/bin/test或者添加一个path => ...参数,该参数包括/bin或任何test位置。