Мы переносим наш 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
является.