I'm getting the ball rolling on puppet for my environment - and I'd like to have a conditional file resource based on whether or not the module itself contains a file based on a naming convention.

So visually, assume a module named 'mysql' and it's layout:


So I'd like the block to verify if the resource for the module exists or not, and take action accordingly, in pseudo-terms:

file { '/etc/my.cnf':

  if -f 'puppet:///mysql/etc/my.$hostname.cnf' {
      source => 'puppet:///mysql/etc/my.$hostname.cnf'
  else {
      source => 'puppet:///mysql/etc/my.cnf'

This way one wouldn't have to manage a csv file or the .pp file with a host specific case statement - is this possible?


The current resource file type documentation specifies you can do file{'/etc/my.cnf': source => [ "puppet:///mysql/etc/my.$hostname.cnf" , "puppet:///mysql/etc/my.cnf" ] }

| improve this answer | |
  • That's a big ol 'DOH, RTFM' for me, shame >.< - thanks! – thinice Jun 1 '12 at 21:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.