Ответы:
«Родной» способ сделать это без execs, если вы используете Puppet 2.6.6+:
file { '/path/to/myfile':
ensure => 'present',
audit => 'all',
}
(Эта функциональность существует начиная с Puppet 2.6.0, но с аудитом возникли некоторые проблемы, которые действительно были устранены только в версии 2.6.6.)
Если вы используете более старую версию, вы также можете указать ресурсу запускаться в noop
режиме, который будет отображать сообщение, когда Puppet запущен, а файл не существует:
file { '/path/to/myfile':
ensure => 'present',
noop => 'true',
}
Вы должны создать свою собственную функцию или использовать exec с командой onlyif. что-то вроде :
exec { "mycommand":
path => "/usr/bin:/usr/sbin:/bin",
onlyif => "test -f /etc/blalba" //yours command
}
creates => '/etc/blabla'
" не будет лучше, чем " onlyif
"?
creates
будет иметь тот же результат и будет намного проще (и немного быстрее). Да, в целом onlyif
обеспечивает большую гибкость.