Global configuration overrides

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

A global configuration override (GCO) allows you to specify a set of changes to the configuration files for one or more nodes within a fabric. GCOs 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 fabric intent inputs.

Note: An exception to the additive nature of GCOs is the system-generated, deviation-related global configuration override. Such configuration overrides can include data that is deleted from the normal configuration of the affected nodes. For more information about deviation-related GCOs, see Deviation-related global configuration overrides.
As part of the GCO, you must provide the JSON configuration data to be added to each configuration. You then specify the nodes within the fabric to which the overrides should be applied in one of the following ways:
  • by selecting individual nodes from the inventory
  • by applying a label to the nodes you want modified, and then selecting that label as the override target

The resulting updated configuration is applied to the specified nodes the next time you deploy a fabric intent that includes any of those nodes. If you create a GCO during the initial fabric intent creation, you can proceed with deployment normally and the initial version of the fabric intent includes the overrides.

To apply the GCO to nodes within an existing fabric intent, you must first create a new candidate version of the fabric intent. You can then proceed with deployment of the new version normally, which includes any changes specified in the configuration override for the nodes within that fabric intent.

GCOs are not specific to individual fabrics; they can affect multiple nodes that have been either selected manually or identified by a shared label, and these nodes could belong to multiple fabrics. For the node configuration changes to take full effect, you must re-deploy any already-deployed fabrics that include the affected nodes.

GCOs themselves can have multiple versions, although only one version of a particular override can be active at one time.

Applying multiple overrides

You can apply multiple GCOs to the same fabric intent, each with its own configuration changes and target nodes.

Each GCO you create includes a number indicating its execution order. When multiple GCOs are applied to a fabric intent, the overrides are applied to the participating nodes' configuration data based on the execution order value, from lowest to highest. This ensures that the overrides interact in a consistent and predictable way.

Deploying fabric intents with overrides

Like any fabric intent deployment, the deployment of fabric intents that include GCOs proceeds as a single transaction. If the deployment of the modified fabric intent fails for any node, the entire deployment is rolled back and any modified nodes are restored to their previous states.

The reason for any failure is recorded in the Fabric Services System Events Log.

Fabric intent displays and configuration overrides

When viewing a fabric intent in the Fabric Services System GUI, the system displays some parameters pertaining generally to the nodes within the fabric intent. These values always reflect the normalized configuration within the fabric intent, and do not reflect any configuration overrides that may have been applied to the nodes.

For example, the Fabric Intents design page displays values for FTP settings near the bottom of the left column. This reflects the FTP settings that are specified when creating the fabric intent, and so may continue to display FTP as disabled across the fabric even though a configuration override subsequently added data to enable FTP on some of the nodes.

Deviation-related global configuration overrides

A deviation is a node configuration that originates outside the Fabric Services System, and so represents a change to the current configuration for that node that is stored in the related fabric intent. The Fabric Services System continues to monitor node configurations after fabric intents have been deployed; and when the node configuration is modified externally, the system reports this as a deviation.

You can accept or reject deviations that have been detected by the Fabric Services System. Deviations you reject are discarded, but deviations you accept are stored in the Fabric Services System as a special type of system-generated GCO.

Such deviation-related GCOs are automatically deployed to the affected nodes. The GCO parameters, and the modified configuration data that is part of the GCO, are set by the system and cannot be modified. Storing the deviation as a GCO ensures that the deviation-based configuration information is stored and managed in a manner consistent with other configuration exceptions that are created by the Fabric Services System user.

Deviation-related GCOs are always the last changes applied to the normalized node configuration (after standard global configuration overrides and contextual configuration overrides) to arrive at the final configuration for a node.

If you delete a node that is the subject of a deviation-related GCO, the GCO itself is deleted from the system.

Global configuration override parameters

Table 1. Global 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 target nodes. 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 determines whether the override should be automatically pushed down to the affected nodes.
  • If disabled, you must create and deploy a new version of the affected fabric intent to apply the new configuration to the affected nodes.
  • If enabled, the system automatically deploys the new configuration to the affected nodes.
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 nodes, the execution order value dictates the order in which the configuration changes are merged into the configurations of the target nodes.

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.

Method for Selecting Nodes None 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
Node Label Selector None If the Method for Selecting Nodes 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.
Node Selector None If the Method for Selecting Nodes 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.
Configuration Type Global Override This value cannot be modified.
Target Configuration See Description This consists of three sub-parameters:
  • Operating System: SRLinux
  • Software Version: Can be:
    • ALL
    • a major software version from the software catalog
    • or both
    .
  • Data Model: SRLinux
Configuration Data None Each configuration override must include a set of JSON configuration data to be merged into the configuration file for the target nodes. For example:
{
  "index": 1,
  "ip-mtu": 5000,
  "vlan": {
    "encap": {
      "single-tagged": {
        "vlan-id": "100"
      }
    }
  }
}

Creating a global configuration override

If you are going to specify the target nodes for this override by a "Node-Type" label they share in common, you should already have created and applied that label to the target nodes as described in Labels.
This procedure describes how to create the initial version of a global 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 one or more software configurations for the target nodes (the operating system, OS version, and data model).
  4. Enter the specific node configuration data that should be applied to the target nodes. Each combination of OS, OS version, and data model can have its own unique configuration code to be applied as part of this override.
  5. Identify the specific nodes to which this override applies by either:
    • selecting individual nodes
    • identifying a label common to the target nodes
  6. Save the override.
While the override is active, it is applied to the targeted nodes when you generate configurations for any:
  • in-progress fabric intents
  • future fabric intents
  • new versions of existing fabric intents
  1. Click the menu.
  2. Select Overrides to open the Overrides page.
  3. Click +CREATE to open the Configuration Creation page.
  4. Enter values for the following parameters as described in Global configuration override parameters:
    • Active
    • Automatic Deployment
    • Name
    • Description
    • Execution Order
  5. 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.
  6. 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 5. 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.
  7. For Method for Selecting Nodes, do one of the following:
    • To specify the target nodes by a label they share, select By Label and go to step 8.
    • To select one or more nodes directly from the inventory, select By Node and go to step 9.
  8. 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.
    6. Go to step 10.
  9. Select the edit icon () above the Node Selector panel to open the Node Selector and do the following:
    1. Check the box at the left edge of the row for each node whose configuration you plan to override.
    2. Click ADD.
      The Node Selector form closes and you are returned to the Create Override page. The node or nodes you selected are displayed in the Node Selector panel.
  10. Click the Save icon () to save the new override.

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