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 #1

Updated by Vincent MEMBRÉ over 4 years ago

  • Target version changed from 6.0.0~beta1 to 6.0.0
Actions #2

Updated by Alexis Mousset over 4 years ago

  • Target version changed from 6.0.0 to 6.0.1
Actions #3

Updated by Vincent MEMBRÉ over 4 years ago

  • Target version changed from 6.0.1 to 6.0.2
Actions #4

Updated by Vincent MEMBRÉ about 4 years ago

  • Target version changed from 6.0.2 to 6.0.3
Actions #5

Updated by Vincent MEMBRÉ about 4 years ago

  • Target version changed from 6.0.3 to 6.0.4
Actions #6

Updated by Vincent MEMBRÉ about 4 years ago

  • Target version changed from 6.0.4 to 6.0.5
Actions #7

Updated by Vincent MEMBRÉ almost 4 years ago

  • Target version changed from 6.0.5 to 6.0.6
Actions #8

Updated by Benoît PECCATTE almost 4 years ago

  • Target version changed from 6.0.6 to 6.2.0~beta1
Actions #10

Updated by Vincent MEMBRÉ over 3 years ago

  • Target version changed from 6.2.0~beta1 to 6.2.0~rc1
Actions #11

Updated by François ARMAND over 3 years ago

  • Target version changed from 6.2.0~rc1 to 7.0.0~beta1
Actions #12

Updated by Vincent MEMBRÉ over 2 years ago

  • Target version changed from 7.0.0~beta1 to 7.0.0~beta2
Actions #13

Updated by Vincent MEMBRÉ over 2 years ago

  • Target version changed from 7.0.0~beta2 to 7.0.0~beta3
Actions #14

Updated by François ARMAND over 2 years ago

  • Related to Bug #19869: Persist revisions of node inventories in fact-repository added
Actions #15

Updated by François ARMAND over 2 years ago

Actions #16

Updated by Alexis Mousset over 2 years ago

  • Target version changed from 7.0.0~beta3 to 7.1.0~beta1
Actions #17

Updated by François ARMAND over 2 years ago

  • Related to Architecture #20229: Don't historize names of nodes, rules & groups in the database added
Actions #18

Updated by Vincent MEMBRÉ about 2 years ago

  • Target version changed from 7.1.0~beta1 to 7.1.0~beta2
Actions #19

Updated by Vincent MEMBRÉ about 2 years ago

  • Target version changed from 7.1.0~beta2 to 7.1.0~rc1
Actions #20

Updated by Alexis Mousset almost 2 years ago

  • Target version changed from 7.1.0~rc1 to 7.2.0~beta1
Actions #21

Updated by Alexis Mousset over 1 year ago

  • Target version changed from 7.2.0~beta1 to 7.3.0~beta1
Actions #22

Updated by François ARMAND over 1 year 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.

Actions

Also available in: Atom PDF