Назад | Перейти на главную страницу

Перенос кода Puppet в Puppet 4: проблема с классами

Мы переносим наш Puppet Code из 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 расположение.

Конфигурация кода выглядит следующим образом в puppet.conf: codedir = / app / zama / puppetlabs / code

На основании этого я скопировал scripts,files and templates как определено в source параметр в следующее место

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

Я думаю, что не уверен, где именно разместить файлы в соответствии с source проявляется выше.

Вы не включили весь свой subversion.pp, но похоже, что у вас есть что-то вроде следующего:

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

Ошибка в том, что test команда не квалифицирована. Либо измените его на /bin/test или добавить path => ... параметр, который включает /bin или где угодно test является.