Upgrade notes

Before upgrading a Rudder server, you should make a backup by following the backup procedure.

Plugins upgrade

If your server is connected to the Internet (directly or through a proxy), and you have configured your account in the setup wizard (or directly in /opt/rudder/etc/rudder-pkg/rudder-pkg.conf), the upgrade process will take care of upgrading to plugins to a compatible version.

If it is not the case, you will need to download the new ones from downloads.rudder.io. and install them following the usual installation procedure.

You can check the current state of plugins with:

rudder package list --all

Upgrade from Rudder 8.1 to 8.2

Upgrade from Rudder 8.1 is supported.

Enforced use of BCRYPT to hash passwords

For security reasons, the bcrypt hash algorithm is now favoured over md5 and sha unsalted hash algorithms.

If you previously used one of those unsalted hash algorithms, you should migrate user passwords to the more secure and salted BCRYPT algorithm. A migration in the rudder-users.xml file will be applied since the rudder server upgrade to 8.2 : in the /opt/rudder/etc/rudder-users.xml file, an attribute unsafe-hashes="true" is added that allows to still log in with the unsalted passwords. Once you have migrated the passwords of all users to one hashed with BCRYPT, you should change the value to unsafe-hashes="false" and restart you Rudder server, that will disallow any unsalted password and will make the authentication more secure.

User management no longer needs the plugin

The user-management plugin in 8.1 is no longer needed to have multiple users and manage them in Rudder : the "User management" administration page is now integrated in Rudder since the 8.2 version. All features from the plugin have been moved, and additional features such as specific authentication provider and user API tokens still require the installation of the authentication backends and api-authorization plugins.

Rework of the Windows variables

In prior versions of Rudder, policy variables expansion was done using built-in raw Powershell variable interpretation which leads to :

  • Security issues using Powershell injections

  • Using two different syntaxes for the variables in Rudder based on the node OS family (Windows/Linux)

Starting 8.2, the generated policies used by the Windows nodes are no longer interpreted by Powershell and the variables expansion is now made possible by a more fine grained parsing of the directives and techniques content at generation time and a simple template engine.

Using variables on Windows nodes in Rudder will now be done using the exact same syntax as when using some on a Linux node. Previously used Windows variables syntaxes are no longer supported and will break generation.

As the older syntaxes are no longer supported, after upgrading to 8.2, if you were using the Windows plugin, it is most likely that the policy generation will be stopped on your Rudder until you are done with the complete syntax migration. A safety mecanism has been added to prevent any generation as long as no longer supported syntaxes are in used in your policies.

As a rule of thumb, avoid any occurrence of the pattern $(.*) in your directives and techniques. To help with the migration, please refer to the table below:

Old syntax New syntax

String type

$($const.n)

${const.n}

Json/Data type

$($node.properties.datacenter)

${node.properties[datacenter]}

Json/Data type

$($my_prefix.my_variable.datacenter.dns)

${my_prefix.my_variable[datacenter][dns]}

Raw

$(user_content)

${const.dollar}(user_content)

The generation safety is done by a very simple script located in a new policy-generation-pre-start webapp hook located in /opt/rudder/etc/hooks.d/policy-generation-pre-start and distributed with the Windows plugin.

Note that in some cases the hook may block the generation if you are using inputs similar to the now deprecated syntax. If it is the case, please try to use ${const.dollar}(…​) instead of $(…​) in the directives/methods fields.

The hook can still be deactivated by commenting its content if needed, with the risk of deploying potentially broken, policies to your Windows nodes.

Removal of obsolete techniques

The WindowsUpdate technique has been removed from Rudder and the System Updates plugin should be used instead.

Removal of the python based rudder package CLI

The python implementation was deprecated in 8.1 and replaced by a newer implementation with slight changes to its options. The older one will no longer be shipped in Rudder and only the default rudder package CLI introduced in 8.1 will remain.

Upgrade from Rudder 8.0 or older to 8.2

Direct upgrades from 8.0 versions and older are no longer supported on 8.2. If you are still running one of those, either on servers or nodes, please first upgrade to one of the supported versions, and then upgrade to 8.2.


← on SLES on Debian/Ubuntu →