a puppet-ipa user type and a new difference engine

A simple hack to add a user type to my puppet-ipa module turned out to cause quite a stir. I’ve just pushed these changes out for your testing:

3 files changed, 1401 insertions(+), 215 deletions(-)

You should now have a highly capable user type, along with some quick examples.

I’ve also done a rewrite of the difference engine, so that it is cleaner and more robust. It now uses function decorators and individual function comparators to help wrangle the data into easily comparable forms. This should make adding future types easier, and less error prone. If you’re not comfortable with ruby, that’s okay, because it’s written in python!

Have a look at the commit message, and please test this code and let me know how it goes.

Happy hacking,


PS: This update also adds server configuration globals management which you may find useful. Not all keys are supported, but all the framework and placeholders have been added.


2 thoughts on “a puppet-ipa user type and a new difference engine

  1. Hey James, this module looks interesting! Certainly a lot of effort has been put in there, and a module for FreeIPA can be extremely useful.
    Any specific reason on the single-file manifest (init.pp) design choice for your module? It’s one of the first module I see packaged in a single .pp file and I must admit it’s quite hard to visualize the structure and available constructs without the usual one-file-per-resource-or-class separation.

    • Hi David,

      Glad you like the module.

      You’re 100% right that I should split it up. The only reason I haven’t yet is because it’s still in “development” mode. I find it really hard to hack on puppet code when it’s in 20 different files, whereas with the current setup, I just scroll or page up and down. If you have a solution to this problem, please let me know!

      Going forward, I absolutely plan to split it up according to the correct puppet file hierarchy. Sorry that I haven’t done so yet. If it would help you a lot, I can put this on my early TODO list. Alternatively, if there are parts that you’d like some help visualizing, or have a specific feature you’re missing, let me know.


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 )

Connecting to %s