Thanks a lot Fellows, I will start working on the virtual resource immediately. Thanks again! -Tom
On Mar 16, 12:01 pm, Felix Schäfer <[email protected]> wrote: > Your definition seems fine and sound (on a quick look), just replace > the part that is always the same (here being file { "/data01/ > multi_mysql": ... }) with a virtual resource, and you're done > > Greets, > > Felix > > Am 16.03.2009 um 16:48 schrieb TomTom: > > > > > 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 <[email protected]> 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---
