Hi Bruce, Thanks for the snappy reply. I need to create X number of mysql_X directories under /data01/ multi_mysql/. Sometimes I might need to only create one instance, sometimes I might need to create as many as 10. How can I craft a flexible class that will create and install X number? For example /data01/multi_mysql/mysql_A /data01/multi_mysql/mysql_B /data01/multi_mysql/mysql_C /data01/multi_mysql/mysql_D /data01/multi_mysql/mysql_E /data01/multi_mysql/mysql_F /data01/multi_mysql/mysql_G /data01/multi_mysql/mysql_H
Your suggestion for creating a class to do the file system creation is a good one, but how would I make it flexible to create mysql_X number of directories? I didn't think you could with a puppet class. That's why I went down the path of trying to call a function (definition) multiple times. More information on how you would implement a flexible puppet class would be greatly appreciated. Thank you very much for your help. Ill buy you a beer at the first puppet conference. :) -Tom On Mar 16, 11:33 am, Bruce Richardson <itsbr...@workshy.org> wrote: > On Mon, Mar 16, 2009 at 08:16:31AM -0700, TomTom wrote: > > Second of all, when I try to run the second mysql_B installation, > > puppet borks and says: > > puppetd[23415]: Could not retrieve configuration: Duplicate > > definition: File[/data01/multi_mysql] is already defined in file /etc/ > > puppet/manifests/definitions/dba/mysql_instance.pp at line 76; cannot > > redefine at /etc/puppet/manifests/definitions/dba/mysql_instance.pp:76 > > > I believe puppet is getting hung up on the "idempotency" (Not sure if > > I am using this word correctly) > > Puppet is seeing the file definition when the function is called to > > install the second instance, and is saying that the definition is > > By function I take it you mean "definition". > > Puppet only lets you define any resource once. If you have defined > File['/data_dir/multi_mysql'] once, you can't define it again, no matter > how deeply buried it is within nested classes or definitions. Don't > panic one way to get around this is checking to see if the resource has > already been defined and only creating it if not. So change your > mysql_install_definition to have some thing like this: > > if defined( File["/$data_dir/multi_mysql"] ) { > debug( "/$data_dir/multi_mysql already exists" ) > } else { > > file { "/$data_dir/multi_mysql": > mode => 775, owner => "mysql", group => "sysadmin", > require => File [ "/$data_dir" ], > } > } > > Another way to do this would be to have a class that creates the > multi_mysql directory and have this definition include it. That would > be more idiomatic puppetry, I think, because it sticks with the > convention of using classes for things of which there is only one. > > -- > Bruce > > What would Edward Woodward do? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---