RUDDER 4.3 – Focus on the ‘Technique Parameters’ feature

RUDDER aims at providing an easy to use configuration management solution. One of the key design choice that allows it is the separation of configuration according to different abstraction levels:

Techniques which are configurable configuration templates

Directives which are ready-to-use instances of a technique

Directives are then linked to machines (using rules and groups). Techniques come from two different sources:

Built-in technique, which are installed with RUDDER and directly usable. They allow managing system components (SSH server, Users, etc).

The technique editor which provides an easy to use web interface to build custom techniques from low level unitary methods

Until RUDDER 4.3, techniques created with the technique editor lacked a part of the flexibility of the built-in techniques: once created, the user could only select a policy mode when defining an directive from it, while built-in techniques provide a complete set of customizable parameters. All configuration customization in techniques from the editor needed to refer to variables directly inside the technique’s code (for example to node properties).

This had major drawbacks:

It was really difficult to keep track of variable usage, and reading the whole content of a technique was the only way to know which variables it uses

These variables were only evaluated at agent execution time, preventing detection of undefined variables at the policy generation level

It broke the abstraction level of the techniques, requiring the user of the technique to know about its internals

RUDDER 4.3 introduced the ability to add variables to techniques from the technique editor. This means directives created from the technique editor now take parameter, like built-in one. The parameters are configured directly in the technique editor. This allows easily specializing a generic technique using parameters. By defining the following parameters:

Any parameter of any methods from this technique will be able to use the value of these parameters using the classic syntax (${domain} and ${port} in this case).

This also allows applying the same technique editor-based technique to the same node for multi-instance application (for example for a technique configuring a software repository, etc.).

When defining a directive from this technique, the user will have access to a standard directive form like:

Which allows using the full power of the abstraction the directives constitute with custom defined techniques!

For now, these technique parameters are all string values, but we will very likely add more data types in the future releases.

What’s next?

RUDDER 4.3 brings the last consolidations on the features that version 4.0 brought. Feedbacks received allowed us to enrich and perfect them over 3 versions while working on the big novelties to appear soon in RUDDER 5.

Indeed, the next version is going to be a major release, which will bring many changes both inside and outside Rudder, including :