While the initial blog post on LConf 1.3.0 is in German, here’s the English version for everyone 🙂
There have been plenty of new features added to the new LConf release, such as the TreeRewrite allowing to define the method of inheriting/overwriting attributes on the tree during LConf Export. In order to keep the default behaviour as known from LConf 1.2 leave it to the default ‘None’ setting in config.pm
Performance gains was one of the problems in large scale setups which is now addressed by using Perl’s Parallel::ForkManager module (required minimum version is 0.7.6!) and forking child processes during LConf Export increasing the overall performance when generating valid Icinga configuration.
The community reported missing attributes, and so here they are – display_name, notes, contactgroup_members, is_volatile, flap_threshold. Some might still be missing, but that’s gonna be addressed in 1.4 then.
And yet – revamping configure/make and the perl modules to be installed into FHS compliant paths. Even further, making all required paths available as configure options and adding a newly created spec file for easier RPM packaging – a hell of work, but pretty worth the benefit when working on the nightly builds and package server – your feedback on that is very welcome 🙂
Since we are using LConf not only as configuration tool, but also in large enterprise distributed setups in combination with Icinga master slave setups, there have been also changes and addins in this region:
- LConfSlaveSync now uses the checkresult spool dir by default on the Icinga master pusing collected checkresults from the slaves (and not the external command pipe as done previously)
- LConfSlaveExportRules is a replacement for LConfSlaveExport. Basically, it allows to split configuration based on patterns, e.g. Icinga Custom Variables – this is the case when the LConf trees cannot be built and divided into Master and Slave trees. As this is a pretty advanced features, please check the examples on the documentation.
- enablemidmaster is a new configuration option, allowing to put a different mid-master.pl custom script where the configuration may be manipulated for the master only. This remains useful when the master must contain special configuration which cannot be inherited in ldap trees (also an advanced feature)
- custom vars can now be used to name a service. Using something like tcp_$_SERVICEPORT$ will be replaced to “tcp_1234” when ‘lconfServiceCustomvar => _PORT 1234’ is set. Please note that this makes your configuration somewhat dynamic and will harden debugging on errors.
Due to the many changes (look out for the new and shiny Changelog), there’s been even more focus on clear documentation as well as upgrade notes. You’ll further find plenty of new sections on documentation too, such as LConf Template Tree, LConf Konfiguration, LConf TreeRwrite as well as more details on Distributed Setups with LConf.
There were changes to the schema (when adding new attributes), so you are required to diff and replace the new netways.schema(.ldif) as well as update our itemMap in config.pm diff’ed to your existing configuration. Furthermore, please note that all scripts have been moved to $PREFIX/bin/ and contrib/lconf_deploy.sh is now following the naming schema with contrib/LConfDeploy.sh – and last but not least, various configuration options in config.pm have been renamed.
So the best option – get a test install with a local openldap server and try LConf 1.3.0 before putting it into production. And while at it, create rpms and distribute those. Feedback is always welcome 🙂
PS: LConf Standalone Web and LConf for Icinga Web also got new bugfix releases. I’m pretty much into packaging the Icinga Web module, since it perfectly fits into my Icinga Core and Web development installs and adds the last missing bit – a configuration tool and a cool drag and drop ui, hiding all the complicated ldap stuff away, creating fancy Icinga test configuration with easy attribute inheritation ;:-)