Automating a Service Provider Network: A Practical Introduction#
ITNOG9 digest Program Adjacent pick 19–20 May 2025
Elia Aielli
- Why: A bottom-up, production-first automation story — valuable precisely because it starts from one repetitive, high-risk task rather than a grand platform, which is how most operators actually begin.
- What: How Timenet automated the single border ACL aligned across all its edge routers (Cisco ASR9k, IOS-XR): a YAML source-of-truth model generated from the running config, then deployed atomically so the network is never left open mid-change — with attention to TCAM exhaustion and IOS-XR best practices.
- How: Netmiko/SSH to collect running ACLs, TextFSM with NTC templates for parsing (a local template was written for the XR ACL command, planned for upstream contribution), a Python function converting structured output into the YAML model, Jinja2 to adapt the model to the
cisco.iosxr.iosxr_aclsmodule withstate: replaced(single commit, ACL always applied to interfaces), plus a cron script checking for drift. Deliberately simple stack: Ubuntu, Python, Ansible, Jinja2, Netmiko. - Where applicable: Any operator starting automation on CLI-first gear; explicitly vendor-agnostic in approach even though the example is IOS-XR. Future work acknowledges the limits: moving to a structured SoT, Git versioning/CI-CD, object-group alignment.