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


8

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

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

Ответы:


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',
}

Да. это здорово с новой версией марионетки. Я работал с pre 2.6.0 и должен написать свою собственную функцию ruby ​​для проверки файла / пустого файла.
MealstroM

9

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

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}

sure => present создаст файл, если он не существует. Базич хочет только проверить, а не создавать его. См. Документы: docs.puppetlabs.com/references/stable/type.html#file
shakalandy,

Спасибо, но ничего интересного в документах.
Базис

я обновил мой мой ответ
MealstroM

1
@MealstroM: " creates => '/etc/blabla'" не будет лучше, чем " onlyif"?
Freiheit

1
@MealstroM: В этом конкретном случае, createsбудет иметь тот же результат и будет намного проще (и немного быстрее). Да, в целом onlyifобеспечивает большую гибкость.
freiheit
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.