Architecture #14931
closedAlways versionned all configuration objects in Git
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.
Updated by Vincent MEMBRÉ about 5 years ago
- Target version changed from 6.0.0~beta1 to 6.0.0
Updated by Alexis Mousset about 5 years ago
- Target version changed from 6.0.0 to 6.0.1
Updated by Vincent MEMBRÉ about 5 years ago
- Target version changed from 6.0.1 to 6.0.2
Updated by Vincent MEMBRÉ almost 5 years ago
- Target version changed from 6.0.2 to 6.0.3
Updated by Vincent MEMBRÉ almost 5 years ago
- Target version changed from 6.0.3 to 6.0.4
Updated by Vincent MEMBRÉ almost 5 years ago
- Target version changed from 6.0.4 to 6.0.5
Updated by Vincent MEMBRÉ over 4 years ago
- Target version changed from 6.0.5 to 6.0.6
Updated by Benoît PECCATTE over 4 years ago
- Target version changed from 6.0.6 to 6.2.0~beta1
Updated by François ARMAND about 4 years ago
Work in progess here: https://github.com/fanf/rudder/commit/eb069dcb3e8bcea1220313b68cf57cbf8b10d8f6
Updated by Vincent MEMBRÉ about 4 years ago
- Target version changed from 6.2.0~beta1 to 6.2.0~rc1
Updated by François ARMAND about 4 years ago
- Target version changed from 6.2.0~rc1 to 7.0.0~beta1
Updated by Vincent MEMBRÉ over 3 years ago
- Target version changed from 7.0.0~beta1 to 7.0.0~beta2
Updated by Vincent MEMBRÉ about 3 years ago
- Target version changed from 7.0.0~beta2 to 7.0.0~beta3
Updated by François ARMAND about 3 years ago
- Related to Bug #19869: Persist revisions of node inventories in fact-repository added
Updated by François ARMAND about 3 years ago
- Related to Architecture #20081: Add revision to rule added
Updated by Alexis Mousset about 3 years ago
- Target version changed from 7.0.0~beta3 to 7.1.0~beta1
Updated by François ARMAND about 3 years ago
- Related to Architecture #20229: Don't historize names of nodes, rules & groups in the database added
Updated by Vincent MEMBRÉ almost 3 years ago
- Target version changed from 7.1.0~beta1 to 7.1.0~beta2
Updated by Vincent MEMBRÉ over 2 years ago
- Target version changed from 7.1.0~beta2 to 7.1.0~rc1
Updated by Alexis Mousset over 2 years ago
- Target version changed from 7.1.0~rc1 to 7.2.0~beta1
Updated by Alexis Mousset over 2 years ago
- Target version changed from 7.2.0~beta1 to 7.3.0~beta1
Updated by François ARMAND over 2 years ago
- Status changed from In progress to Resolved
- Target version changed from 7.3.0~beta1 to 7.0.5
The first part were done in 7.0 with rules, directives and techniques. We also deprecated the possibility to disable serialisation in git.
A fact repository with inventories was added in 7.1 in #19869.
In 7.1, we also normalized techniques from technique editor and from std lib: they now all have all their resources in git.
Groups was done in 7.2 in #21315. In 7.2, we also added the possibility to download revision of policy objects at a given revision in #21247.
I'm closing that ticket but we will try to attach related evolution.