Contextual configuration overrides

Note: Contextual configuration overrides is a limited-support feature for this release.

Contextual configuration overrides alter the configurations for sub-interfaces associated with a workload intent.

When you create a workload intent, the Fabric Services System prepares a set of configuration files for all of the nodes participating in the workload intent. The configuration for each of these nodes is based directly on the parameters you provide when creating the workload intent. These are the "normalized configurations" for the participating nodes.

A contextual configuration override allows you to specify a set of changes to the configuration files for one or more nodes participating in a workload intent. Configuration overrides are strictly additive; they allow you to insert new or modify existing configuration data, but cannot be used to remove any of the configuration data that the system creates based on the original workload intent inputs.

As part of the override, you must provide the JSON configuration data to be added to each configuration. You then specify the sub-interfaces within the workload intent to which the overrides should be applied. Optionally, you can also specify the nodes on which the contextual configuration override should apply.
Note: Unlike global configuration overrides, the use of labels to identify target objects is not supported.
When you generate a workload intent, the Fabric Services System checks for active contextual configuration overrides. The additional configuration data from those overrides is applied to the configurations of the target objects if they are included in the current workload. This is true whether the workload you are generating is:
  • a workload intent you are currently creating
  • a new workload intent
  • a new version of an existing workload intent

Multiple versions of overrides

You can create additional versions of a contextual configuration override; only one of these can be set to Active at a time. You can set all versions of an override to Inactive if required.

Deleting overrides

If you delete a contextual configuration override, or set all versions of an override to Inactive, any existing workload intents (and the node configurations that support them) are unaffected.

However, the next time you generate a workload intent that previously used the deleted or inactive override, the former override modification does not take place.

Contextual configuration override parameters

Table 1. Configuration override parameters
Parameter Default value Description
Version See Description This value is assigned automatically. The first instance of any configuration override is Version 1.0. Subsequent versions of the same override increment this value.
Active Enabled This value indicates which, if any, version of a configuration override should be used to modify the configuration data for the targets. A maximum of one version of any configuration override can be active at one time.

It is possible to set all versions of an override to inactive.

Automatic Deployment Disabled This value cannot be modified.
Name None This text string identifies the configuration override and is used to identify it in the list of all overrides within the system. It must be unique (but is shared by all versions of the same override).
Description None An optional text string describing the purpose or impact of the override.
Execution Order n+100

If two or more overrides target the same sub-interfaces, the execution order value dictates the order in which the configuration changes are merged into the configurations data.

The override with the lowest Execution Order value is applied first.

The default value is the current highest value plus 100. As a result, the first override created has a default value of 100.

Target Configuration See description This consists of three sub-parameters:
  • Operating System: SRLinux
  • Software Version: either ALL, or a major software version from the software catalog.
  • Data Model: SRLinux
Note: An override can include either a target configuration with a software version of ALL, or one or more target configurations that identify specific supported software versions.
Configuration Type Contextual Override This value cannot be modified.
Type sub-interface Only sub-interface can be selected.

This indicates the type of workload-related object whose configuration data is impacted by this override.

Path /interface/subinterface This indicates where within the structure of a configuration file this override will be inserted. For sub-interfaces, the override text will be inserted within the /interface/sub-interface section of the configuration file.
Method Selector By Type This value cannot be altered.
Selector n/a Contains the list of sub-interfaces that will be affected by this override.

The list of selected objects can span multiple workload intents.

Node Selector None You can optionally use this control to select one or more nodes in the system inventory. Regardless of how many nodes' configurations might be encompassed by the current list of sub-interface or router targets, the configuration override will be applied only on these nodes.
Configuration Data None Each configuration override must include a set of JSON configuration data that will be merged into the configuration data for the targets. For example:
{"ip-mtu": 1501}

Creating a contextual configuration override

Create the specific sub-interfaces whose configurations you are going to modify with this override. You must create these beforehand because you will be prompted to select them during this procedure.
This procedure describes how to create the initial version of a contextual configuration override. At a high level, you create a configuration override by doing the following:
  1. Provide a name and description to identify this override.
  2. Set some configuration parameters for the override:
    • whether it is active
    • where it falls in the overall execution order for all active overrides
  3. Identify the software configuration of the target nodes (the operating system, OS version, and data model).
  4. Enter the specific configuration data that should be applied to the target configurations.
  5. Specify that the configuration override applies to sub-interfaces
  6. Identify the objects to which this override applies by selecting specific, previously-defined sub-interfaces.
  7. Save the override.
While the override is active, it will be applied to the targeted sub-interfaces when you generate configurations for any:
  • in-progress workload intents
  • future workload intents
  • new versions of existing workload intents
  1. Click the menu.
  2. Select Overrides to open the Overrides page.
  3. From the View drop-down, which is set to Global Override by default, select Contextual Override.
  4. Click +CREATE to open the Configuration Creation page.
  5. Enter values for the following parameters as described in Global configuration override parameters:
    • Active
    • Name
    • Description
    • Execution Order
    Note: The Version property is automatically set to 1 and cannot be altered.
    Note: The Automatic Deployment property is disabled and cannot be altered.
  6. Identify a target configuration by doing the following:
    1. Click + ADD.
    2. From the Target Configuration form, select the following:
      • Operating System
      • Software Version
      • Data Model
    3. Click ADD.
  7. In the Configuration panel, add the specific configuration data that you want to be merged into the configurations for the targeted nodes.
    Note: You can enter independent instances of configuration code here for each combination of operating system, version, and data model you selected in step 6. Select each target configuration from the Target drop-down to see its unique window in which to enter configuration code.
    Note: Instead of typing or pasting code in this window, you can use the More... button () at the upper right of the form to select a file from which to import this code.
  8. In the Type drop-down, leave Sub-Interfaces selected.
  9. Select the edit icon () above the Selector panel to open theSelector form (which lists all available sub-interfaces), and do the following:
    1. Check the box at the left edge of the row for one or more displayed sub-interfaces whose configuration you plan to override.
    2. Click ADD.
      The sub-interfaces are added to the Bin panel to the right of the selection list.
    3. If you need to remove a sub-interface from the Bin panel, click the More icon () to the right of the sub-interface in the Bin panel and select Delete from the displayed action list.
    4. Repeat steps 9.a through 9.c until all sub-interfaces you intend to target with this override have been added to the Bin panel.
    5. Click SAVE.
      The Selector form closes and you are returned to the Create Override page. The sub-interface or sub-interfaces you selected are displayed in the Selector panel. The Count value indicates how many sub-interfaces are in the Selector list.
  10. Optionally, use the Node Selector to select one or more specific nodes managed by the Fabric Services System. If the set of defined sub-interface targets for this override encompass multiple nodes, only the nodes on this list will in fact be affected by the contextual configuration override.
    Note: If you do not select one or more nodes here, the contextual configuration override is applied to the configurations of all nodes encompassed by the selected sub-interfaces.
  11. Click the Save icon () to save the new override.

If you created the configuration override in the midst of creating a workload intent, you must generate that workload intent again to incorporate the override data. You can then resume the creation and deployment of that workload intent.