Intro Story: From CLI to Model-Driven Automation
There’s a turning point in every network engineer’s journey.
A moment where you realize that running commands manually—
line by line, device by device—
is no longer enough.
Not because you lack skills.
Not because CLI is outdated.
But because modern networks have become:
-
larger,
-
more distributed,
-
more dynamic,
-
more sensitive to human error,
-
and more demanding in terms of speed and reliability.
I experienced that turning point myself.
I started my career like many engineers do:
configuring interfaces, routing protocols, VLANs, ACLs… manually.
Repeating the same tasks across dozens of devices.
Troubleshooting issues caused by tiny inconsistencies.
Wondering how to scale cleanly without burning out.
At some point, the questions became louder:
“Why am I typing the same configuration 30 times?”
“Why does one typo break the whole service?”
“Why doesn’t the network understand the structure of its own data?”
That’s when I discovered model-driven networking:
-
YANG → the language that defines network data structures
-
YAML → the human-friendly way to express desired configurations
-
NETCONF & RESTCONF → the APIs that safely apply and validate them
-
Ansible → the tool that brings automation to everyone, not only coders
And suddenly, the puzzle pieces aligned.
Automation is not about replacing engineers.
It’s about elevating them.
The moment you understand YANG and YAML,
the CLI stops being the only way.
You start thinking in models, data, state, intent.
That’s why LS2EC exists:
to demystify these concepts
and make automation accessible, structured, and respectful of your learning curve.
This guide is the one I wish I had the day automation first seemed intimidating.
So let’s break everything down—clearly, simply, and powerfully.
Let’s begin with the foundation: YANG.
⭐2 – YANG Explained Simply
When people first hear about YANG, it often sounds complicated.
Vendors talk about:
-
modules
-
containers
-
lists
-
leaves
-
schemas
-
OpenConfig
-
IETF models
And engineers wonder:
“Do I really need to learn this just to automate a router?”
Here’s the truth:
YANG is not complicated.
YANG is structured.
And structure is exactly what networks have been missing for decades.
Let’s break it down LS2EC-style.
🟦 What is YANG, in the simplest possible words?
YANG is a data modeling language used to describe the structure of network configuration and operational data in a predictable, hierarchical tree.
If CLI is made for humans,
YANG is made for:
-
humans
-
machines
-
APIs
-
automation tools
YANG turns messy, vendor-specific configuration into clean, logical, standardized data.
🌳 **The simplest mental model:
YANG = a tree representation of your network**
Instead of a long CLI file, imagine a structured tree:
device
├── system
│ ├── hostname
│ └── ntp
│ ├── server
│ └── enabled
├── interfaces
│ ├── interface[name="GigabitEthernet1"]
│ │ ├── description
│ │ ├── enabled
│ │ └── ipv4
│ │ ├── address
│ │ └── mtu
├── routing
│ └── bgp
│ ├── as-number
│ └── neighbors
│ └── neighbor[addr="203.0.113.1"]
│ ├── remote-as
│ └── state
└── telemetry
└── enable
Everything becomes:
-
logical
-
uniform
-
vendor-neutral (for open models)
-
easily consumable by automation tools
This is why YANG is a foundation in modern networking.
🧱 Core Building Blocks of YANG (Explained Clearly)
✔ container
A group of logically related items.
✔ list
A list of similar elements (interfaces, neighbors…).
✔ leaf
A single value (description, MTU, remote-as…).
✔ leaf-list
A list of single values (DNS servers).
✔ choice / case
Represents decision branches in configuration.
✔ grouping / uses
Reusable structures, like “functions” in programming.
✔ type
Defines what type of data a leaf contains.
These concepts might sound academic,
but when you automate real devices, you start to appreciate how clean they are.
🧠 Why Engineers Love YANG (Once They Understand It)
✔ It removes ambiguity
CLI can be interpreted.
YANG cannot.
✔ It ensures validation
If your data does not match the model → it’s rejected.
This prevents misconfiguration and outages.
✔ It enables multivendor automation
IETF + OpenConfig models work across Cisco, Juniper, Nokia, Huawei…
✔ It makes automation safer
Tools like NETCONF and RESTCONF rely entirely on YANG.
✔ It transforms the network into structured data
Once the network becomes data → you can automate anything.
🎯 LS2EC Summary
YANG describes how network data must be structured.
It’s the blueprint, the schema, the grammar of network automation.
Now that you understand YANG at a high level,
we can go deeper — visually, with diagrams.
⭐3 — YANG Tree Modeling (with LS2EC Diagrams)
Understanding YANG becomes incredibly easy once you visualize it.
YANG is not just a “language” — it is a hierarchical tree where every node has a clear role:
-
containers
-
lists
-
leaves
-
types
-
choices
-
groupings
Let’s break it down visually, using the LS2EC approach:
simple, structured, intuitive.
🟦 1. The YANG Tree: The True Shape of Network Data
Imagine you strip away the CLI and look at your network as structured data.
Here is how YANG represents a device:
device
├── system
│ ├── hostname
│ └── time
│ ├── ntp
│ └── timezone
├── interfaces
│ ├── interface[name="GigabitEthernet0/0"]
│ │ ├── description
│ │ ├── enabled
│ │ └── ipv4
│ │ ├── address
│ │ └── mtu
│ └── interface[name="Loopback0"]
├── routing
│ └── bgp
│ ├── as-number
│ ├── router-id
│ └── neighbors
│ └── neighbor[addr="198.51.100.1"]
│ ├── peer-as
│ ├── description
│ └── state
└── telemetry
└── enable
This structure is what automation tools use to understand the device.
🧱 2. Mapping the Tree to YANG Elements
Here’s the translation:
-
container → “system”, “interfaces”, “routing”, “telemetry”
-
list → “interface[…]”, “neighbor[…]”
-
leaf → “description”, “enabled”, “as-number”, “router-id”
-
leaf-list → array-like leaves
-
choice/case → branching logic
-
grouping/uses → reusable blocks
This is data modeling, not configuration text.
🟦 3. Why This Tree Model Matters
✔ Predictability
No more guessing “Where does this command belong?”
✔ Machine-readable
YANG is natively consumable by:
-
NETCONF
-
RESTCONF
-
gNMI
-
YDK
-
NSO
-
Terraform network plugins
-
Python automation frameworks
✔ Vendor-neutral (for open models)
Same structure on Cisco, Juniper, Nokia, Arista (OpenConfig/IETF).
✔ Validation
If your config violates the model → it is rejected safely.
🟦 4. Example: BGP Configuration Modeled in YANG
Here is how BGP might look when represented in YANG/JSON-like structure:
routing:
bgp:
as-number: 65001
router-id: 10.10.10.1
neighbors:
- address: "198.51.100.1"
peer-as: 65002
description: "Customer A"
In CLI this might take 8–12 lines.
In YANG, it becomes clean, logical, structured.
🧩 5. The Key Insight
YANG transforms the network from text → into structured, validated data.
Once data is structured, automation becomes infinitely easier.
This is why modern network automation always begins with YANG.
⭐4 — YANG Models: Open vs Native (IETF, OpenConfig, Cisco)
When you start working with YANG, you quickly realize something important:
There isn’t just one YANG model.
There are two main families — and they serve very different purposes.
Understanding the difference is essential for automation, multivendor networks, and DevOps alignment.
Let’s break them down LS2EC-style: clear, simple, powerful.
🟦 1. Open Models
Created to standardize network configuration across vendors.
Open models come from:
-
IETF (Internet Engineering Task Force)
-
OpenConfig (Google, Meta, AT&T, etc.)
-
ITU and other standards bodies
-
open-source communities
Their goal is simple:
Define a common, vendor-neutral way to configure and monitor networks.
This means:
-
one model for interfaces
-
one model for BGP
-
one model for routing
-
one model for telemetry
Regardless of whether you’re using Cisco, Juniper, Nokia, Huawei…
🌍 1.1 Examples of Open Models
📌 IETF Models
Used for fundamental network components:
-
ietf-interfaces -
ietf-routing -
ietf-bgp -
ietf-ospf -
ietf-qos -
ietf-ip
These give the industry a baseline.
📌 OpenConfig Models
Created by global-scale operators (Google, AT&T, Meta…)
to enforce strict multivendor consistency.
They go deeper than IETF by:
-
normalizing data
-
abstracting vendor quirks
-
defining operational data and telemetry
-
enforcing clean, consistent semantics
Example:
-
openconfig-bgp -
openconfig-interfaces -
openconfig-network-instance -
openconfig-telemetry
OpenConfig is the closest thing we have to true vendor alignment.
🟩 2. Native Models
Created by vendors for their platform-specific capabilities.
Vendors still need their own models because:
-
platforms have unique features
-
hardware capabilities differ
-
advanced features are not standardized
-
configuration styles vary
Native models expose the full power of each OS.
Examples:
-
Cisco IOS XR:
Cisco-IOS-XR-* -
Cisco IOS XE:
Cisco-IOS-XE-* -
Cisco NX-OS:
Cisco-NX-OS-* -
Juniper Junos:
junos-* -
Nokia SR OS:
nokia-* -
Huawei VRP: proprietary Huawei models
Native models = maximum platform control and detail.
🧠 3. Why Both Model Types Matter
You need open models when:
-
building multivendor automation
-
aligning with cloud principles
-
exporting telemetry
-
ensuring long-term interoperability
You need native models when:
-
accessing platform-specific features
-
optimizing performance
-
using proprietary capabilities
-
deploying advanced services
🧩 4. Real Example : BGP on Cisco IOS XR
On a single device, you may have:
✔ OpenConfig model
openconfig-bgp
✔ IETF model
ietf-bgp
✔ Cisco native model
Cisco-IOS-XR-ipv4-bgp-cfg
All three coexist.
Why?
Because each serves a different purpose:
-
OpenConfig → multivendor consistency
-
IETF → common industry agreement
-
Native → platform-specific power
This is the reality of modern network automation.
🎯 LS2EC Summary
Open models standardize.
Native models optimize.
You must understand both to automate real networks.
⭐5 — How YANG Interacts with NETCONF & RESTCONF
YANG by itself does not configure anything.
It defines what the data should look like.
To actually retrieve, modify, or apply configurations, we need protocols that:
-
transport structured data
-
validate it
-
commit it safely
-
reject invalid input
-
ensure consistency
Those protocols are:
-
NETCONF (older, robust, transaction-based)
-
RESTCONF (modern, API-friendly, JSON-based)
Together with YANG, they form the backbone of model-driven network automation.
Let’s make it simple.
🟦 1. NETCONF — The Transactional, Reliable Workhorse
NETCONF (Network Configuration Protocol) is the IETF standard for programmatically managing network configurations.
It uses:
-
SSH as the transport
-
RPC (Remote Procedure Calls) as the mechanism
-
XML as the encoding
-
YANG as the data model
And it gives the network something CLI never had:
✔ Transaction safety (all-or-nothing)
If any part of the config fails → the entire change is rolled back.
✔ Validation against YANG models
If your config doesn’t match the model → rejected immediately.
✔ Datastores
running, candidate, startup — controlled, structured, predictable.
✔ Locking
One client at a time, no race conditions, no unpredictable edits.
NETCONF is the most reliable protocol for configuration automation.
🧠 1.1 NETCONF Example
Here’s how an XML payload might look:
<rpc>
<edit-config>
<target>running</target>
<config>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>GigabitEthernet0/0/0/0</name>
<description>LS2EC Interface</description>
<enabled>true</enabled>
</interface>
</interfaces>
</config>
</edit-config>
</rpc>
NETCONF validates the data using YANG,
then applies it, or rejects it safely.
🟨 2. RESTCONF — The Lightweight API for Modern Automation
RESTCONF is the “younger, simpler, HTTP-based” cousin.
It uses:
-
HTTP/HTTPS
-
JSON or XML
-
URLs that map directly to YANG data paths
It is perfect for:
-
DevOps environments
-
integrations with cloud tools
-
quick automation
-
simple CRUD operations
-
JSON-native workflows
RESTCONF speaks the language of modern APIs.
🧠 2.1 RESTCONF Example (PATCH + JSON)
PATCH https://router/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet1
{
“ietf-interfaces:interface”: {
“name”: “GigabitEthernet1”,
“description”: “Interface LS2EC”,
“enabled”: true
}
}
You can send this request from:
-
Python
-
Postman
-
Ansible
-
Bash
-
Terraform
-
Any API client
RESTCONF + JSON is one of the cleanest ways to automate.
🧩 3. NETCONF vs RESTCONF — Which Should You Use?
| Need | Choose |
|---|---|
| strong validation | NETCONF |
| atomic commit (all-or-nothing) | NETCONF |
| friendly modern API | RESTCONF |
| JSON workflows | RESTCONF |
| deep model-driven config | NETCONF |
| lightweight automation | RESTCONF |
The key is this:
Both depend entirely on YANG.
Without YANG, NETCONF and RESTCONF cannot function.
🟦 4. Vendor Adoption (Everyone Uses YANG + NETCONF/RESTCONF)
Cisco
IOS XE, IOS XR, NX-OS → full support.
Juniper
NETCONF pioneer + YANG modeling.
Nokia
SR OS is fully model-driven.
Huawei
VRP supports NETCONF/YANG.
Arista
OpenConfig, YANG, RESTCONF.
YANG has become the universal language of model-driven networking.
🎯 LS2EC Summary
YANG = structure
NETCONF = safe configuration
RESTCONF = modern API
Automation = all three working together
You now understand the fundamental interaction that powers modern network programmability.
⭐ 6 — Real-World Examples (Cisco XR, Cisco XE, Juniper)
Now that YANG, NETCONF, and RESTCONF are clear, let’s make everything real.
Because true understanding does not come from definitions —
it comes from seeing how it’s used in production.
Let’s explore real examples from Cisco IOS XR, Cisco IOS XE, and Juniper Junos.
🟦 1. Cisco IOS XR — Interface Configuration via YANG + NETCONF
IOS XR is Cisco’s flagship service provider OS.
It is deeply model-driven.
To configure an interface using YANG + NETCONF, you send XML that matches the ietf-interfaces model.
📌 Example NETCONF payload
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
<interface>
<name>GigabitEthernet0/0/0/0</name>
<description>LS2EC Interface</description>
<enabled>true</enabled>
</interface>
</interfaces>
NETCONF validates:
-
the structure
-
the leaf types
-
mandatory fields
-
constraints from the YANG model
If valid → applied.
If invalid → rejected safely.
This is what we mean by model-driven configuration.
🟦 2. Cisco IOS XE — RESTCONF + JSON (Modern, Cloud-Friendly)
IOS XE is widely used in enterprises and SD-WAN architectures.
It is fully compatible with RESTCONF and JSON, which makes it great for DevOps integration.
Example: Setting an interface description via RESTCONF.
PATCH https://router/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet1
{
“ietf-interfaces:interface”: {
“name”: “GigabitEthernet1”,
“description”: “Interface LS2EC”,
“enabled”: true
}
}
This can be sent from:
-
Postman
-
Python
-
Ansible
-
CI/CD
-
Terraform (via HTTP provider)
RESTCONF makes network automation feel like cloud automation.
🟦 3. Cisco IOS XR — BGP Configuration via OpenConfig Model
OpenConfig is heavily used in large-scale automation environments (telcos, clouds).
A sample OpenConfig-style BGP configuration might look like:
{
"bgp": {
"global": {
"config": {
"as": 65001
}
},
"neighbors": {
"neighbor": [
{
"neighbor-address": "203.0.113.1",
"config": {
"neighbor-address": "203.0.113.1",
"peer-as": 65002,
"description": "Customer A"
}
}
]
}
}
}
This is vendor-neutral.
It works on Cisco, Juniper, Arista, Nokia… with minimal changes.
🟦 4. Juniper Junos — NETCONF + YANG Example
Juniper was one of the pioneers of NETCONF.
Here’s how you configure an interface description using Junos YANG:
<interface xmlns="http://yang.juniper.net/junos/interfaces">
<name>ge-0/0/0</name>
<description>LS2EC Interface</description>
</interface>
Different vendor, same logic:
-
consistent model
-
validated structure
-
predictable automation
This is the power of YANG.
🧠 Why These Real Examples Matter
Because they show that:
✔ Every major vendor uses YANG as the foundation
Cisco, Juniper, Nokia, Arista, Huawei…
✔ NETCONF and RESTCONF are the new configuration languages
Not CLI.
✔ JSON/XML payloads become the automation standard
Not text commands.
✔ Once you understand the structure, automation becomes universal
You stop thinking “Cisco vs Juniper”.
You start thinking “model-driven network engineer”.
🎯 LS2EC Summary
Real automation starts when you understand how YANG models map to actual device configurations.
Once you master that, you can automate any vendor, any device, any environment.
⭐7 — YAML Explained with LS2EC Pedagogy
If YANG is the structure of network data,
YAML is the language we use to tell automation tools what we want the network to do.
YAML is everywhere:
-
Ansible playbooks
-
Kubernetes manifests
-
Docker Compose files
-
CI/CD pipelines
-
Cloud automation configs
-
GitOps workflows
But what makes YAML so powerful is not complexity —
it’s simplicity.
Let’s make YAML crystal clear.
🟨 1. The simplest definition of YAML
YAML is a human-friendly data format designed to express configuration and desired state in a readable, structured, indentation-based style.
It’s not a programming language.
It has no loops, no functions, no logic.
YAML is simply:
-
key → value
-
lists
-
dictionaries
-
indentation
And that’s precisely why engineers love it.
🟨 2. Why YAML is so popular in automation
✔ extremely readable
Even people who hate coding can read YAML.
✔ uses indentation to show structure
No brackets, no semicolons, no parentheses.
✔ integrates with every automation tool
Especially Ansible, the #1 tool in network automation.
✔ describes “desired state”
Not “how” to do something — just the outcome.
✔ perfect for network engineers transitioning to DevOps
You don’t need to be a developer to automate with YAML.
🟨 3. LS2EC Example: A simple, clean YAML structure
Here is how YAML expresses configuration intent:
interface:
name: GigabitEthernet1
description: "LS2EC Interface"
enabled: true
ipv4:
address: "10.0.0.1"
mask: "255.255.255.0"
Even if you’ve never seen YANG, JSON, or XML before,
this YAML is easy to understand.
That’s YAML’s superpower.
🟨 4. The 3 Golden Rules of YAML
1️⃣ Indentation = structure
Use spaces, never tabs.
2️⃣ Everything is a dictionary or a list
And you build hierarchy with indentation.
3️⃣ YAML describes data, not logic
You are not “writing code”, you are describing desired outcomes.
🟨 5. YAML’s magic moment: “declarative intent”
YAML enables the most powerful concept in modern automation:
You declare the final state — the system figures out how to reach it.
Example:
enabled: true
You’re not saying:
-
“run this command”
-
“apply this CLI”
-
“use this syntax”
You’re saying:
“I want the interface to be enabled.”
And Ansible, RESTCONF, NETCONF, Terraform (depending on the tool) does the rest.
🎯 LS2EC Summary
YANG defines the structure.
YAML expresses the intention.
Automation tools bridge the two.
This is the modern mindset of the network engineer.
⭐8 — YAML + Ansible + Automation (The LS2EC Way)
If YANG gives structure to network data,
Ansible is the tool that brings YAML to life.
Ansible became the #1 automation tool in networking for three reasons:
-
It uses YAML (simple, readable, declarative).
-
It doesn’t require agents on devices.
-
It is multivendor (Cisco, Juniper, Arista, Nokia, Huawei…).
You don’t need to be a programmer to use Ansible.
You just need to express your intentions in YAML — and Ansible handles the rest.
Let’s break down how it works.
🟨 1. What is Ansible, simply?
Ansible is a declarative automation engine that applies configuration, gathers state, and orchestrates network tasks using YAML playbooks.
It works with:
-
SSH
-
NETCONF
-
RESTCONF
-
APIs
-
modules for each vendor
And it integrates with:
-
Git
-
CI/CD
-
Infrastructure-as-Code
-
DevOps and NetDevOps pipelines
This is why Ansible is the bridge between network and cloud worlds.
🟨 2. What makes Ansible perfect for network automation?
✔ No agents
Network devices remain untouched.
✔ YAML-driven
Readable by anyone.
✔ Modular
Hundreds of modules for Cisco/Juniper/Arista/etc.
✔ Repeatable
One playbook can configure 100 devices.
✔ Idempotent
You can run the same playbook multiple times without breaking anything.
✔ API-aware
It works with NETCONF, RESTCONF, gNMI, CLI, or any API.
🟨 3. Structure of a simple Ansible playbook
Here is an intuitive example:
- name: Configure Cisco Interface
hosts: routers
gather_facts: notasks:
– name: Set interface description
cisco.ios.ios_interface:
name: GigabitEthernet1
description: “LS2EC Interface”
enabled: true
You didn’t write Python.
You didn’t write complex logic.
You declared your intention.
That’s the essence of YAML + Ansible.
🟦 4. NETCONF Example with Ansible (YANG-driven)
For YANG-based configuration:
- name: Configure interface via NETCONF/YANG
hosts: xr
connection: netconftasks:
– name: Apply interface config
netconf_config:
xml: |
<config>
<interfaces xmlns=“urn:ietf:params:xml:ns:yang:ietf-interfaces”>
<interface>
<name>GigabitEthernet0/0/0/0</name>
<description>LS2EC Interface</description>
<enabled>true</enabled>
</interface>
</interfaces>
</config>
Here’s what happens:
-
YAML orchestrates the task
-
NETCONF applies the XML
-
YANG validates the data
Automation becomes:
predictable, structured, safe.
🟦 5. RESTCONF Example with Ansible (JSON-based)
A more DevOps-oriented approach:
- name: Configure interface via RESTCONF
hosts: iosxe
connection: localtasks:
– name: Update interface
uri:
url: “https://router/restconf/data/ietf-interfaces:interfaces/interface=GigabitEthernet1”
method: PATCH
headers:
Content-Type: “application/merge-patch+json”
body_format: json
body:
description: “LS2EC Interface”
validate_certs: no
This workflow is used in:
-
SD-WAN
-
Cloud-integrated networking
-
CI/CD pipelines
-
ZTP workflows
🧠 YAML + Ansible is how network engineers enter the automation world
You don’t need:
-
to become a Python expert
-
to build complex scripts
-
to master APIs immediately
You only need:
-
a YAML file
-
a task
-
an intention
And suddenly you can manage 50 routers at once.
This is the LS2EC philosophy:
Make automation accessible without losing technical depth.
🎯 LS2EC Summary
YAML expresses intent.
Ansible orchestrates it.
NETCONF/RESTCONF apply it.
YANG validates it.
This is modern network automation at its finest.
⭐9 — YAML in Cisco Automation (IOS XE, IOS XR, NX-OS, NSO, Telemetry)
Cisco’s transition to model-driven networking is one of the biggest evolutions in the networking world.
For decades, Cisco was known for CLI-first operations.
But today, automation is built on:
-
YANG (data model)
-
YAML (intention + templates)
-
NETCONF / RESTCONF (transport)
-
gNMI / MDR (telemetry)
-
NSO (orchestration)
And YAML sits right at the center of this transition.
Let’s explore how Cisco devices use YAML in real automation scenarios.
🟦 1. YAML + Ansible + Cisco IOS XE
(Enterprise networking, campus, SD-WAN, access layer)
IOS XE is one of the easiest Cisco platforms to automate.
It supports:
-
NETCONF
-
RESTCONF
-
YANG models (IETF, OpenConfig, Cisco-native)
A simple YAML playbook for interface config looks like:
- name: Configure IOS XE Interface
hosts: iosxe
gather_facts: notasks:
– name: Set description
cisco.ios.ios_interface:
name: GigabitEthernet1
description: “LS2EC Interface”
enabled: true
This replaces 3 to 8 CLI lines,
is idempotent,
and can be applied to 100 devices at once.
This is where YAML shines.
🟦 2. YAML + NETCONF on Cisco IOS XR
(Service provider, backbone, high-scale routing)
IOS XR is built for programmability.
It was designed from day one to be YANG-centric.
Ansible + NETCONF + YAML can drive XR like this:
- name: XR interface config
hosts: xr
connection: netconftasks:
– name: Apply interface via YANG model
netconf_config:
xml: |
<config>
<interfaces xmlns=“urn:ietf:params:xml:ns:yang:ietf-interfaces”>
<interface>
<name>GigabitEthernet0/0/0/0</name>
<description>LS2EC</description>
<enabled>true</enabled>
</interface>
</interfaces>
</config>
YAML orchestrates.
NETCONF transports.
YANG validates.
XR commits safely.
This is model-driven networking in one block.
🟦 3. YAML in Cisco NSO (Network Services Orchestrator)
Cisco NSO uses:
-
YANG to define services
-
YAML to instantiate them
-
templates to render configurations
-
device packages to handle vendors
A simple L3VPN service could look like:
service:
name: l3vpn-ls2ec
customer: ls2ec
sites:
- name: paris
interface: Gig0/0
ip: 10.10.10.1/24
- name: abidjan
interface: Gig0/1
ip: 10.10.20.1/24
NSO takes this YAML definition and generates:
-
Cisco XR config
-
Cisco XE config
-
Juniper config
-
Nokia config
All from one service definition.
This is real cross-vendor automation.
🟦 4. YAML in Cisco Telemetry (MDR / gNMI)
Modern Cisco operating systems let you define telemetry sensors using YAML-like structures.
Example:
sensor-group:
name: ls2ec_sensors
paths:
- openconfig-interfaces:interfaces/interface/state
- openconfig-bgp:bgp/neighbors/neighbor/state
This YAML maps directly to OpenConfig YANG telemetry models.
🟦 5. YAML in IOS XE Native Automation (Day-N Templates)
IOS XE supports “Day-N Templates” written directly in YAML or Jinja2.
Example:
interfaces:
- name: GigabitEthernet1
description: "LS2EC"
enabled: true
ipv4:
address: 10.0.0.1/24
These templates can be applied at scale across:
-
Catalyst 9K
-
ISR/ASR routers
-
SD-WAN edge devices
🧠 Why Cisco uses YAML everywhere now
Because YAML:
✔ is readable
Perfect for engineers coming from CLI.
✔ is declarative
You describe what you want, not how to do it.
✔ maps naturally to YANG
Indentation = hierarchy → just like YANG trees.
✔ works perfectly with APIs
RESTCONF and gNMI speak JSON/YAML very well.
✔ fits DevOps workflows
Git, CI/CD, templating, version control.
🎯 LS2EC Summary
In Cisco’s automation ecosystem, YANG defines the data,
YAML defines the intention,
and APIs apply the configuration.
Cisco has fully embraced model-driven networking and YAML is at the center of this new era.
⭐10 — YANG vs YAML (Clear, Practical Comparison)
Now that we’ve explored YANG and YAML independently, it’s time to clarify something the industry often confuses:
YANG and YAML are not alternatives.
They solve completely different problems.
Yet many engineers think:
-
“Should I learn YANG or YAML?”
-
“Which one is more important?”
-
“Are they competing standards?”
Let’s demystify this the LS2EC way:
clean, structured, intuitive.
🟦 1. The Core Difference (One Sentence)
YANG models define the structure of network data.
YAML files express the desired configuration using that structure.
They are complementary.
Not interchangeable.
Not competitors.
Think of them like:
-
YANG = blueprint
-
YAML = instructions for the builder
Or even:
-
YANG = grammar
-
YAML = sentences written using that grammar
This is why automation becomes so elegant once you understand both.
🟦 2. YANG is for models — YAML is for intent
| Concept | YANG | YAML |
|---|---|---|
| Purpose | Define data structures | Describe desired state |
| Used by | Vendors, standards, APIs | Engineers, automation tools |
| Format | Tree model with strict rules | Free-form config with indentation |
| Validation | Strict and enforced | Soft (validated by tools) |
| Language type | Modeling language | Data-serialization format |
| Controls | What exists | What you want |
| Associated protocols | NETCONF, RESTCONF, gNMI | Ansible, CI/CD, templating |
| Scope | Network schema | Playbook, config intent |
🟦 3. Real Example: Interface Description
YANG perspective (structure):
interface:
├── name
├── description
├── enabled
└── ipv4
├── address
└── mtu
YANG defines this structure.
It tells the network: “These fields exist. This is their type. This is how they relate.”
YAML perspective (intent):
interface:
name: GigabitEthernet1
description: "LS2EC Interface"
enabled: true
YAML expresses what you want the interface to look like.
🟦 4. Technical Analogy
If networking were a restaurant:
-
YANG = the menu structure
Sections, categories, allowed items. -
YAML = your order
The items you choose, with details.
The kitchen (NETCONF/RESTCONF/Ansible) uses the menu (YANG) to validate whether your order (YAML) is possible.
🟦 5. Why Engineers Often Confuse YANG and YAML
Because both:
-
are hierarchical
-
appear in automation workflows
-
use indentation
-
interact with network models
But their purpose is fundamentally different.
The key LS2EC insight:
YANG ensures correctness.
YAML ensures simplicity.
Automation needs both.
🎯 LS2EC Summary
YANG = the structure of the network — strict, validated, universal.
YAML = the desired state — simple, readable, declarative.
Together, they create the foundation of modern network automation.
⭐11 — When to Use YANG vs YAML (Decision Guide)
YANG and YAML are complementary —
but in real projects, engineers often wonder:
-
“When should I work directly with YANG models?”
-
“When should I just write YAML playbooks?”
-
“Do I need both?”
-
“Which one is used in automation pipelines?”
Here is the definitive LS2EC decision guide.
🟦 1. Use YANG when you need structure, validation, or vendor modeling
YANG is the right choice when you need to:
✔ Understand how a device structures its configuration
Before automating, you must know the model:
-
“What fields exist?”
-
“What is mandatory?”
-
“What is the hierarchy?”
YANG answers these questions.
✔ Build multivendor automation
OpenConfig / IETF YANG provides universal structure.
✔ Validate configurations with APIs
NETCONF and RESTCONF rely on YANG to approve or reject data.
✔ Develop automation tools or services
Cisco NSO, Terraform providers, custom orchestration platforms → all use YANG internally.
✔ Work with model-driven telemetry
gNMI, MDR, dial-out sensors → all depend on YANG paths.
If you need accuracy, structure, enforcement, vendor clarity → use YANG.
🟦 2. Use YAML when you express intent, tasks, or desired state
YAML is the right choice when you need to:
✔ Write Ansible playbooks
This is 90% of network automation in enterprises.
✔ Declare the configuration you want to apply
Simple, readable, human-friendly:
enabled: true
description: "LS2EC Interface"
✔ Create templates for large-scale changes
Campus, data center, WAN — YAML fits perfectly.
✔ Integrate with CI/CD pipelines
GitLab, GitHub Actions, Jenkins pipelines all use YAML manifests.
✔ Define services in Cisco NSO or other orchestrators
YAML is the “service description” layer.
✔ Build automation without deep programming skills
YAML is the most accessible way to automate.
If you need simplicity, readability, declarative intent → use YAML.
🟦 3. The LS2EC Super Rule
⭐ Use YANG to understand the data.
⭐ Use YAML to automate the data.
This rule eliminates 90% of confusion.
🟦 4. Quick Decision Table (Engineers love this)
| Task | Use YANG | Use YAML |
|---|---|---|
| Understand network data structure | ✔ | |
| Build NETCONF/RESTCONF payloads | ✔ | |
| Validate config before committing | ✔ | |
| Compare models across vendors | ✔ | |
| Write automation playbooks | ✔ | |
| Define desired interface/routing state | ✔ | |
| Build service templates | ✔ | |
| Telemetry paths (models) | ✔ | |
| CI/CD network pipelines | ✔ | |
| NSO service definitions | ✔ | |
| Developing automation tooling | ✔ |
This table will make your article rank extremely well —
Google loves structured expert content.
🟦 5. The LS2EC Analogy (simple & powerful)
Think of a building project:
-
YANG = architectural blueprint
Defines rooms, dimensions, allowed structures. -
YAML = list of furniture and items you want in each room
Your intent.
You need both to build a proper home.
🎯 LS2EC Summary
Use YANG for accuracy and structure.
Use YAML for simplicity and automation.
Use both for modern network engineering.
⭐12 — Full Comparison Table: YANG vs YAML
Below is the definitive comparison table engineers search for when trying to understand the difference between YANG and YAML.
It’s concise, technical, and highly SEO-friendly.
🟦 YANG vs YAML — Complete Comparison Table (2025 Edition)
| Category | YANG | YAML |
|---|---|---|
| Purpose | Define network data models and structure | Declare desired configurations and automation tasks |
| Type | Data modeling language | Data serialization / configuration format |
| Primary Role | Schema validation, structure, strict rules | Human-friendly expression of intent |
| Used By | Vendors, standards bodies, APIs, NETCONF/RESTCONF | Engineers, DevOps teams, Ansible, CI/CD |
| Typical Usage | Device models, telemetry schemas, NETCONF/RESTCONF trees | Playbooks, templates, service definitions |
| Encoding | Tree-based, strict hierarchy | Indentation-based hierarchy |
| Supported Formats | Reusable in XML, JSON | Native YAML, often rendered as JSON |
| Validation | Strong, enforced through models | Soft, validation done by automation tools |
| Multivendor Scope | High (IETF, OpenConfig) | High (via Ansible modules & templates) |
| Flexibility | Low (strict, structured) | High (readable, easy to modify) |
| Learning Curve | Moderate (conceptual modeling) | Very low (simple indentation rules) |
| Interaction With APIs | Required by NETCONF/RESTCONF | Used by tools that call APIs (Ansible, CI/CD) |
| Relation to Vendor Features | Can reflect vendor-specific capabilities (native models) | Usually model-agnostic; templates can adapt to any model |
| Automation Role | Defines what’s allowed | Defines what you want |
| Ideal For | Data modeling, validation, interoperability | Practical automation, orchestration, CI/CD |
🟦 Quick Visual Summary
YANG → defines structure
YAML → describes desired stateYANG → strict, validated, normalized
YAML → simple, readable, declarative
YANG → used by devices and APIs
YAML → used by engineers and tools
🎯 LS2EC Summary
This table shows the deepest truth:
YANG and YAML are not competing technologies.
They are complementary layers of the same automation stack.
Learning both is what transforms a network engineer into a modern NetDevOps engineer.
Inspirational LS2EC Conclusion
Network automation often feels intimidating at first.
Engineers think:
-
“Do I need to become a developer?”
-
“Do I really have to learn APIs?”
-
“Is automation going to replace me?”
But the truth is far simpler — and far more powerful:
Automation doesn’t replace engineers.
It elevates them.
Learning YANG and YAML is not about turning you into someone else.
It’s about helping you become a stronger version of yourself:
-
more confident
-
more scalable
-
more precise
-
more efficient
-
more strategic
I’ve been through this transformation myself.
From configuring routers line by line,
to understanding the deeper structure of data models,
to automating at scale using simple YAML playbooks…
I realized something essential:
Once you understand the structure (YANG)
and the intent (YAML),
the entire network becomes programmable.
Not in a “developer” way.
In a network engineer way.
A way that respects your background,
your expertise,
your intuition,
your mindset.
YANG gives you clarity.
YAML gives you simplicity.
Together, they give you power.
And this is exactly what LS2EC stands for:
-
demystifying complex concepts
-
empowering through knowledge
-
making cybersecurity and networking accessible
-
teaching with heart, not ego
You don’t have to learn everything in one day.
Just start with small steps:
-
read a YANG model
-
build a simple YAML playbook
-
push a config with NETCONF or RESTCONF
-
automate a repetitive task
And suddenly, you will feel it:
You are no longer just configuring networks.
You are shaping them.
This is the future of networking.
And with the right mindset, it is yours.