Home > Cobbler, Puppet > Puppet module for managing Cobbler

Puppet module for managing Cobbler

I was working on a Puppet module for managing Cobbler last few months. It’s my first module with custom types, so I was on a steep learning curve. We’ve been using it in production for few weeks, but I felt it wasn’t as good as it should have been. Puppet agent runs were very slow (longer than a minute) because custom providers did several command line queries to get the current state of the system from Cobbler. These were all ordinary strings and providers had to cut out relevant information and store it into organized data formats like hashes. So, I’ve decided to rewrite the providers to use XMLRPC interface Cobbler offers and to fetch the state of the whole system with one single XMLRPC query. See the results of rewrite yourself:

Site1 (22 x cobblersystem)
- agent run before: 68.1s
- agent run after:   9.7s

Site2 (19 x cobblersystem)
- agent run before: 54.0s
- agent run after:  10.0s

Site3: (11 x cobblersystem)
- agent run before: 40.9s
- agent run after:   9.7s

Site4: (22 x cobblersystem)
- agent run before: 80.1s
- agent run after:  10.6s

As you see, cobbler custom providers did really big impact on agent run times before I rewrote them to use ‘self.instances’ function. So finally I was happy with the module. Now I can proudly publish it 🙂 Puppet module is available at Puppet Forge:

http://forge.puppetlabs.com/jsosic/cobbler

Code is available at BitBucket, as is the issue tracker:

https://bitbucket.org/jsosic/puppet-cobbler

Hope you like it!

Advertisements
Categories: Cobbler, Puppet
  1. January 7, 2013 at 6:17 pm

    Hi, I’m the product owner for the Puppet Forge. I’m thrilled that you’ve chosen to share your Cobbler module with the community and intend to promote it from our side. Would you be interested in writing a guest module of the week post on the Puppet Labs blog? If you’re unfamiliar with the series, past posts can be found here: http://puppetlabs.com/category/blog/module-of-the-week-blog/

    Also, would you mind copying the documentation you have in BitBucket into the module description on the Forge? This will help with adoption. We’re working on the ability to automatically extract your README for this purpose but obviously that isn’t done yet.

    Thanks for your module!

    • January 7, 2013 at 7:11 pm

      Ryan, thank you for pointing out that I can add documentation into module’s description field on the Forge. I’ve added the Description from BitBucket page, and rewrote it to Markdown language.

      I will be very glad to write a blog post about this module, no problem at all. I will take a look on the existing blogs for the module of the week section, and will contact you when I finish the text, if that’s OK with you.

      • January 7, 2013 at 9:28 pm

        That would be awesome, thank you! You don’t have to stick to our style verbatim so long as you’re covering all the important bits that past posts have covered.

        Thanks again, I’m looking forward to it! My email is ryan@puppetlabs.com

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: