Puppet: Conditional file source based on naming convention
        Posted  
        
            by 
                thinice
            
        on Server Fault
        
        See other posts from Server Fault
        
            or by thinice
        
        
        
        Published on 2012-06-01T21:21:42Z
        Indexed on 
            2012/06/01
            22:42 UTC
        
        
        Read the original article
        Hit count: 334
        
puppet
|puppetmaster
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:
mysql/
    /files
        /etc/
            my.cnf
            my.hostname1.cnf
            my.hostname2.cnf
     /manifests
            init.pp
...
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?
© Server Fault or respective owner