This patch could probably be split into separate pieces but we're in hack mode, so why bother? It does however add some important pieces. * The ipa::server::config type lets you set config options. Available options are listed in the code. Some of these aren't enabled yet because they weren't needed at the moment. Have a look at the code to see. * The ipa::server::user type lets you manage users in the same style that you used for managing hosts or services. Many admins will want to use this feature for including their "core" administrative users, and set user_excludes so that the rest of the database can be managed manually. See the example for some hints on getting started. Be careful not to wipe your user database! Test with --noop first :) * The diff.py difference engine was essentially rewritten from scratch. The original version was quite simply, a hack. It soon became too crufty, and with the need to add more types such as user, a clean engine was needed. All difference checking now happens with individual comparator functions. They support function decorators to make it easy to wrangle the arg data and the ipa to see if they are really different. Please test extensively, and let me know how you like this code. Thanks! James