Project

General

Profile

Actions

Architecture #14931

closed

Always versionned all configuration objects in Git

Added by François ARMAND almost 5 years ago. Updated over 1 year ago.

Status:
Resolved
Priority:
N/A
Category:
Web - Config management
Target version:
Effort required:
Name check:
Fix check:
Regression:

Description

We want to add auto versionning of ALL rudder objects which have a role in the configuration applied to node.

We have two "level" of objects related to configuration (and some objects are in the middle): "managed objects", which are totally under Rudder control (they are pure rudder concepts - typically, "directives"), and "extrinsic resources", which have an impact on final applied configuration, but are not configuration per se (typically: ncf library version ; node inventories).

The managed objects are:

- Rules
- Global Parameters
- Directives
- Techniques from Rudder Lib
- Techniques created with techniques editor (We need to add a “resource” part in them for config files, templates, etc whose version is linked to technique one.
- Groups (the group definition, but the group node list is extrinsic)
- Rudder top-level (ie rudder git minus other objects)
- Node parameters and some properties

"Extrinsic" dependencies are:

- Ncf library version,
- Rudder version,
- Server on which Rudder is installed flavor, version, or parameters,
- Rudder settings,
- Files in unsupervised directories,
- Some nodes properties,
- List of nodes in groups.

Some of these objects are already saved in git (directives, groups, ncf, parameters, ruleCategories, rules, techniques).
We need add the other ones, included some way to track changes in the extrinsic resources.

An other axe of change is to make everything-git-related behave in the same way. Today, techniques from the technique library have a "technique library version". This does make any sense in that new way of doing thing: HEAD is always current version appart if you specifilically say otherwise.

That means that we will also need to have a new "ID" for these objects with the commitid (defaulting to "master:HEAD")

The first step will be to make the git part of Rudder mandatory. This comes with a caveat: we still need to have a way to synchronize several git between rudder master / replica. The problematic things are "extrinsic resources", which need to be updatable but not put in git.
A first step (bis) will be to remove the "technique version" logic and always use last one. Becarefull: that need to keep the "observation" part where we can trigger a policy generation on change.

After that, we will be able to clean much of the rudder properties about Git in /opt/rudder/etc/rudder-web.properties.

The second step is to add missing serialisation of things.

The third step will be to normalize generation trigger so that any change in git trigger a policy generation. At that point, we will be able to always log what commitid is used for the generation.


Subtasks 1 (0 open1 closed)

Architecture #18302: Make possible to give a revision for directives in rule and get correct technique filesReleasedNicolas CHARLESActions

Related issues 3 (0 open3 closed)

Related to Rudder - Bug #19869: Persist revisions of node inventories in fact-repositoryReleasedVincent MEMBRÉActions
Related to Rudder - Architecture #20081: Add revision to rule ReleasedVincent MEMBRÉActions
Related to Rudder - Architecture #20229: Don't historize names of nodes, rules & groups in the databaseReleasedFrançois ARMANDActions
Actions

Also available in: Atom PDF