Innsikt fra Bluetree | Hold deg oppdatert innen IT og teknologi.

[My Journey to CCIE Automation – Week 3] Orchestration API + NETCONF

Written by Bjørnar Lintvedt | 29 August, 2025
My journey continues

👋 Hi, I’m Bjørnar Lintvedt

I’m a Senior Network Consultant at Bluetree, working at the intersection of networking and software development.

As mentioned in my first blog post, I’m preparing for the CCIE Automation lab exam — Cisco’s most advanced certification for network automation and programmability. I’m documenting the journey here with weekly, hands-on blog posts tied to the blueprint.

Link to my GitLab Repo

 

Week 3

This week has been all about getting deeper into NETCONF and YANG – two cornerstones of modern network automation.

NETCONF and ncclient

NETCONF is a protocol that lets you communicate with network devices over XML. Instead of pushing raw CLI commands, you send structured data in XML.

To work with it in Python, I used the ncclient library:
  • It establishes a NETCONF session to the device
  • Lets you perform operations like get, get-config, edit-config
  • Uses XML payloads to push or retrieve configuration/state

YANG 
YANG is the data modeling language that defines what kind of data you can send with NETCONF.

  • It describes device configuration and state in a structured way.
  • I familarized my self with Cisco Yang Suite, which is a tool that make it a bit easier to understand how Yang works.
  • To access specific parts of the model, you often use XPath queries. Think of it as a GPS coordinate inside the XML tree – so instead of digging through thousands of lines of config, you can just ask:
    👉 “Give me the interface description for GigabitEthernet0/0/0”

 

 

Orchestration Service + Automation script 

Armed with this knowledge, I built a new Nautix service: Orchestration

🔹 Orchestration Service

  • A Flask app serving an Orchestration API. 
  • API endpoints to create and list jobs
  • Jobs are stored in a database and immediately trigger a NETCONF operation with ncclient

This means I can now go from“devices in inventory” → to “execute NETCONF action” in one flow. Which brings me to a new automation script.

🔸 Run netconf job on all devices in inventory 

  • A python Click tool that

    • Takes XML path, NETCONF operation method, username, and password as parameters

    • Fetches all devices from the Inventory API
    • Creates jobs in the Orchestration API
    • Which pushes XML configs or retrieves data
    • Displays the results

 

Look into my GitLab repository for more details — I’ve tried to comment the code as best as I can.

 

Service Interactions update

Since a new service is added, the Nautix diagram has also been updated:

 

Reflections from the Week
  • NETCONF and YANG were abstract at first, but working hands-on with ncclient and YANG Suite helped a lot.

  • There is for sure a lot of improvements to be made. But I have limited time, so it's best effort :)

 

📅 What’s Next
In Week 4 I will focus on working with Ansible:
Blueprint item 2.7 Create and use a role by utilizing Ansible to manage infrastructure, given support documentation
    2.7.a Loop control
    2.7.b Conditionals
    2.7.c Use of variables and templating
    2.7.d Use of connection plug-ins such as network CLI, HTTPAPI, and NETCONF

 

🔗 Useful Links

 

Blog series