Configuration changes in a network have traditionally been made on a per-device basis using a specific set of procedures and configuration line items.

These devices were configured imperatively, that is, the exact steps to achieve the desired end-state were specified. With the imperative model, administrators build a workflow every single time they want to perform a task, and as more components are added, the workflow grows in size and complexity.

This differs from using a declarative model where an administrator models how they would like their environment to look, and the switches, configuration management tool, or a combination thereof decides on how best to implement the requested changes.

One of the main differences between the imperative and declarative models is that administrators in an imperative model are typically required to have deep syntax and context knowledge for the entities they are configuring. Syntax and context can differ based on operating code version. Using a declarative approach administrators can request a change using a broad statement of desired outcome, and the system is responsible for "translating" the desired outcome to the different network elements.

Declarative or model-based configuration management becomes important in the broader data center context, including compute, virtualization, network, storage, and other resources. Architects and engineers are not just modeling the network, they are modelling the entire infrastructure.

From a micro level, the network itself may be heterogeneous; it may have different switch types, levels of code, or even vendors. From a macro level, the network is not the only entity within the data center; configuring a network element on a virtual switch can be drastically different from configuring that same element on a physical switch.

To illustrate the difference between imperative and declarative models, the following workflow is an example of an imperative operation on a switch - configuring a VLAN.

Imperative Workflow Explicitly Expresses Each Instruction

Imperative Workflow Explicitly Expresses Each Instruction