Generating OSPF, BGP and MPLS/VPN Configurations from Network Data Model

Over a month ago I decided to create a lab network to figure out how to solve an interesting Inter-AS MPLS/VPN routing challenge. Instead of configuring half a dozen routers I decided to develop a fully-automated deployment because it will make my life easier.

I finally got to a point where OSPF, LDP, BGP (IPv4 and VPNv4) and MPLS/VPN configurations are created, deployed and verified automatically. No, I still haven’t solved the original problem, but it was more fun developing the Ansible playbooks anyway.

Next step (instead of figuring out the solution to the original problem): multi-vendor support. If anyone wants to contribute Junos configurations please send me a pull request (or an email).

Eventually I’ll write the documentation (and a lengthy series of blog posts explaining how the whole thing works), for the moment I keep pretending the source code is self-documenting.

Want to build a similar solution on your own? You’ll learn how to do that in my Network Automation online course.


  1. I believe i tried something similair, finding out half-way through, that every vendor uses a different yang model... So instead of copying config into the CLI while logged into to the router, i pasted it from a linux commandline using a script (which uses different yang models). Although it's nice to have, it didnt make my work that much quicker.

    Why are we so desperate in automating everything? I believe automation for certain area's work perfect, but not for networking, since we just have too many vendors, too many devices, too many CLI's. People want something like Norton Ghost, but thats something i believe is not comparable.
    1. We certainly are far from a panacea at present, but this kind of attitude that networking is some special snowflake is the reason, IMHO, why we are in this mess to begin with. Server people used to have the same notion, that every one is somehow special and needs care and feeding (the "pet" model). But nowadays you're all but a leper if you aren't at least automating your basic system builds. To think that networking is somehow categorically different is foolish.

      The issue, of course, is that most NOSes aren't built to be automated (some are obviously better than others). But the situation is improving, and the tools with which we automate network devices are as well.

      So again, while automation is far from perfect *right now*, we should absolutely be striving for automation of as many aspects of the network as we can. In my opinion if you're not working on it right now, you're already behind and increasingly so as you continue to do things the same old way.
  2. I have a complete playbook for Juniper, mpls ldp rsvp etc
  3. @Andreas Are they available publicly?
  4. Hi Evan,
    I think that the link for Ansible playbook is broken.
    Best regards
    1. I love it how people can't get my name right, even though it's on every single blog post.

      Disregarding that - yes, the link was broken because I moved the code to a separate repository. Fixed - thank you.
Add comment