Contextual configuration overrides

Contextual configuration overrides (CCOs) alter the configurations for the following types of objects associated with a workload intent:
  • sub-interfaces
  • routers

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 CCO allows you to specify a set of changes to the configuration files for one or more nodes participating in a workload intent. CCOs 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 or routers 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. You can also use labels to specify the sub-interfaces, routers, or nodes that are the targets of a CCO.

When you generate a workload intent, the Fabric Services System checks for related, active CCOs. 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 CCO, or set all versions of an override to Inactive, 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 CCO, the former override modification does not take place.

Deleting supporting elements

Each CCO involves one or more specific sub-interfaces or routers that you select when you create the override. If those sub-interfaces or routers are subsequently deleted, the system does not automatically update any CCO that refers to them. You must modify each affected CCO to correct the reference to the non-existent object.

However, if you try to save a CCO that refers to a non-existent object (for example, a router that existed when the CCO was first created but that has since been deleted), the system warns you that the result is an invalid workload configuration.

Contextual configuration override parameters

Table 1. Configuration override parameters
Parameter Default value Description
Version See Description Indicates the version number for this override. 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 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 Specifies whether the override should be automatically pushed down to the affected nodes.
  • If enabled, the system automatically deploys the new configuration to the affected nodes (provived the associated workload intent is not stale).
  • If disabled, you must manually deploy workload intent and send the configuration to the affected nodes.

If the affected fabric intent or workload intent are locked for any reason, the system will continue trying to automatically deploy the CCO until it is successful.

Name None 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 Describes the purpose or impact of the override.
Execution Order n+100

Indicates where this particular override should fall within the overall execution sequence when there are multiple overrides.

If two or more overrides target the same sub-interfaces or routers, 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

Identifies several configuration properties of any node that are expected if the node is a candidate for this override.

It consists of three sub-parameters:
  • Operating System: SRLinux
  • Software Version: either
    • ALL
    • a major software version from the software catalog
    • or both
  • Data Model: SRLinux
Configuration Type Contextual Override This value cannot be modified.
Type sub-interface

Indicates the type of workload-related object whose configuration data is impacted by this override. Its value can be one of the following:

  • sub-interface
  • router
Path /interface/subinterface Indicates where within the structure of a configuration file this override should be inserted.
  • if the override applies to sub-interfaces, the override text is inserted within the /interface/sub-interface section of the configuration file
  • if the override applies to routers, the override text is inserted within the /network-instance section of the configuration file
Type Selector n/a Indicates the list of sub-interfaces or routers that are affected by this override.

The list of selected objects can span multiple workload intents.

Node Method Selector None Indicates how to identify nodes to be affected by this override. This can be either of these values:
  • By Label: you must later specify a label that has been applied to the intended target nodes.
  • By node: you must later select one or more nodes from the inventory to be the target of the override
Note: If you specify the Node Method Selector, you must also specify the Type Method Selector.
Node Selector None

Identifies the specific nodes to which this override should be applied.

If the Node Method Selector parameter is set to By Node, this control is displayed and active. You can use this control to select one or more nodes in the system inventory. When applied, the configuration data in this override is applied to each of the selected nodes within the fabric intent.You can optionally use this control to select one or more nodes in the system inventory. Regardless of how many nodes' configurations may be encompassed by the current list of sub-interface or router targets, the configuration override is applied only to these nodes.
Node Label Selector None

Identifies the label or labels that qualify a node as a candidate for this override.

If the Node Method Selector parameter is set to By Label, this control is displayed and is active. You can use this control to specify one or more node labels. These labels must be "Node-type" labels. When applied, the configuration data in this override is applied to all nodes within the fabric intent with at least one of these labels.
Type Method Selector None

Indicates how to identify sub-interfaces or routers to be affected by this override. This can be either of these values:

  • By Label: you must later specify a label that has been applied to the intended target sub-interfaces or routers.
  • By Type: you must later select one or more sub-interfaces or routers from the workload intent to be the target of the override.
Type Label Selector None

Identifies the sub-interfaces or routers that qualify as a candidate for this override.

If the Type Method Selector is set to "By Label", this control is displayed and is active. You can use this control to specify one or more sub-interface or router labels. The types of the labels must be "Sub-Interface" or "Router". When applied, the configuration data in this override is applied to all nodes within the fabric intent associated to sub-interfaces or routers selected by the labels.

Configuration Data None

Contains the configuration data that is applied to each node that is subject to this configuration override.

Each configuration override must include a set of JSON configuration data to be merged into the configuration data for the targets. For example:
{"ip-mtu": 1501}

Creating a contextual configuration override

Create the specific sub-interfaces or routers whose configurations you are going to modify with this override. You must create these beforehand because you are 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 whether the configuration override applies to sub-interfaces or routers.
    Note: Contextual configuration overrides for routers apply only to routed subnets or bridged subnets with IRB.
  6. Identify the objects to which this override applies by selecting specific, previously-defined sub-interfaces or routers.
  7. Optionally, restrict the override to only affect specific nodes.
  8. Save the override.
While the override is active, it is applied to the targeted sub-interfaces and routers 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. Use the Region Selector at the top of the page to select the region in which to create the override.
    Note: You cannot change the region selection after you begin creating the override. If you select a new region in the Region Selector while creating an override, the creation form closes and you are returned to the Overrides page.
  4. From the View drop-down, select Contextual Override.
    Note: The View drop-down is set to Global Override by default.
  5. Click +CREATE to open the Configuration Creation page.
  6. Enter values for the following parameters as described in Contextual configuration override parameters:
    • Active
    • Automatic Deployment
    • Name
    • Description
    • Execution Order
  7. 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.
  8. 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 7. Select each target configuration from the Target drop-down list to see its unique window in which to enter configuration code.
  9. In the Type drop-down list, indicate whether this override affects the configuration of a sub-interface or a router.
  10. For Type Method Selector, do one of the following:
    • To specify the target sub-interfaces or routers by a label they share, select By Label and go to step 11.
    • To select one or more sub-interfaces or routers directly from the inventory, select By Node and go to step 12.
  11. Select the Edit icon () above the Label Picker panel to open the Label Picker form and do the following:
    1. Ensure that you have created a label with the Label Key "Sub-Interface" or "Router" and applied that label to all of the the subinterfaces or routers whose configurations you plan to override.
      Note: Procedures for creating and applying labels to objects can be found in Labels and are beyond the scope of this procedure.
    2. Select the label with the Label Key "Sub-Interface" or "Router" from the displayed list of labels.
    3. Click the + icon beside the label name to add it to the panel at the top of the Label Picker form.
    4. Continue selecting labels and adding them to the top panel until you have selected all of the labels for subinterfaces or routers whose configuration you want to override.
    5. Click SAVE.
      The Label Picker form closes and you are returned to the Create Override page. The label or labels you selected are displayed in the Type Label Selector panel.
    6. Go to step 13.
  12. Select the edit icon () above the Type Selector panel to open the Selector form (which lists all available sub-interfaces or routers), and do the following:
    1. Check the box at the left edge of the row for one or more displayed sub-interfaces or routers whose configuration you plan to override.
    2. Click ADD.
      The sub-interfaces or routers are added to the Bin panel to the right of the selection list.
    3. If you need to remove a sub-interface or router 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 12.a through 12.c until all sub-interfaces or routers 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-interfaces or routers you selected are displayed in the Selector panel. The Count value indicates how many sub-interfaces or routers are in the Selector list.
  13. Optionally, use the Method for Selecting Nodes to select the mechanism to specify nodes participating in this CCO:
    • To specify the target nodes by a label they share, select By Label and go to step 14.
    • To select one or more nodes directly from the inventory, selct By Node and go to step 15.
  14. Select the Edit icon () above the Node Label Selector panel to open the Label Picker form and do the following:
    1. Ensure that you have created a label with the Label Key "Node-type" and applied that label to all of the nodes whose configurations you plan to override.
      Note: Procedures for creating and applying labels to objects can be found in Labels and are beyond the scope of this procedure.
    2. Select the label with the Label Key "Node-type" from the displayed list of labels.
    3. Click the + icon beside the label name to add it to the panel at the top of the Label Picker form.
    4. Continue selecting labels and adding them to the top panel until you have selected all of the labels for nodes whose configuration you want to override.
    5. Click SAVE.
    The Label Picker form closes and you are returned to the Create Override page. The label or labels you selected are displayed in the Node Label Selector panel.
  15. Optionally, use the Node Selector to restrict the scope of this override. Select one or more nodes that are managed by the Fabric Services System. If the set of sub-interface or router targets you selected for this override encompass multiple nodes, only the nodes on this list are affected by the CCO.
    Note: If you do not select one or more nodes here, the contextual configuration override is applied to all nodes encompassed by the sub-interfaces or routers you selected.
  16. 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.