Тестирование кукол, если файл существует

8

Я ищу способ проверить, существует ли файл в моем клиенте (просто проверить, а не создание). Я нашел способ (File.exists) в шеф-повара, но это не было просто с куклой.

Заранее спасибо.

bazic
источник

Ответы:

6

«Родной» способ сделать это без 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',
}
jgoldschrafe
источник
Да. это здорово с новой версией марионетки. Я работал с pre 2.6.0 и должен написать свою собственную функцию ruby ​​для проверки файла / пустого файла.
MealstroM
9

Вы должны создать свою собственную функцию или использовать exec с командой onlyif. что-то вроде :

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}
MealstroM
источник
sure => present создаст файл, если он не существует. Базич хочет только проверить, а не создавать его. См. Документы: docs.puppetlabs.com/references/stable/type.html#file
shakalandy,
Спасибо, но ничего интересного в документах.
Базис
я обновил мой мой ответ
MealstroM
1
@MealstroM: " creates => '/etc/blabla'" не будет лучше, чем " onlyif"?
Freiheit
1
@MealstroM: В этом конкретном случае, createsбудет иметь тот же результат и будет намного проще (и немного быстрее). Да, в целом onlyifобеспечивает большую гибкость.
freiheit