For this series, our first guest is John Capobianco.
John, has been intentional about his journey, with 20 years experience working in IT, he is still grinding. From writing a book about network automation titled “Automate Your Network,” to speaking on Cisco Live and f5 DevCentral about his automation journey, which I both watched live.
In this interview, I had an intimate conversation with John, about how he study and learn new technologies.
So, there’s often lots of ways people study a new technology or certification, I am curious how you go about yours?
Interesting. What do you mean when you say you started with A+ from “many different books”?
CompTIA A+ was my first industry certification and back then (2004) you had to study exam guide books to prepare – there was no YouTube !
OMG! LoL. In your last f5 Dev central webinar you spoke about starting your automation journey around 2017. You started with the DevNet, right?
Yes I first started using Ansible in March 2017 according to my emails. After Cisco DevNet at Cisco Live in San Diego inspired me.
Can you describe your learning approach to understanding Ansible?
I recommend first making sure you have the right toolkit – namely a Git repository and VS Code editor with some extensions to help you along.
Then I recommend trying to simply gather facts using Ansible. Get the json back from a device, and then try to understand the data in JSON format.
From there anything is possible!
After Ansible, I assume you began to play with Python afterwards in order to make creative Config tasks, right?
Well yes and no – I use Python to enhance my Ansible with Jinja2 templates and filter plugins.
But I have stayed with Ansible ! You certainly can achieve the same things with Python natively. But each person should pick what they are comfortable with and what tool simplifies -not complicates – your everyday life.
Yes, there is no right or wrong approach or tools ! That is part of the magic of automation.
Amazing stuff. I didn’t know about this.
When you started learning python, what resource did you feel made a difference while learning the language?
Great question! I happen to be a computer programmer turned network engineer so Python is a very natural transition from C++ and Java which I studied in school. But I’ve read 2 amazing books I recommend to people transitioning from network to developers.
How did you digest these books, did you begin with “Ansible for Devops” while also watching some DevNet training, what approach did you use?
Practice ! Failing a lot and trying to learn from every failure ! For every hour reading or video I probably did 5 hours of coding. It’s like guitar or painting you have to practice lots to improve.
While learning networking concepts, how do you come up with scenarios to mess up the lab and fix it up again?
I like to use a mix of science and art ! Using the OSI stack as a guide you can create different failure scenarios- what if this cable gets u plugged at layer 1? What if STP fails at L2? Routing issues at L3 all the way up to firewalls at L4 and applications issues at L7!
And some new tools like pyATS can automate this testing. Meaning with some python you can test if you have BGP neighbors!
Yes and it’s free!!! You “parse” commands with genie then write code to test the results.
Automation goes well beyond just capturing data or configuration management- now you can even test the state of your network with Python tools.
So in my lab sometimes I try to force failures to test if my code will also catch those failures and report or take action based on the automation.
Or more importantly testing that my automated solution is not introducing issues – you can rapidly bring down networks with bad code much faster than the CLI !
You also can’t rely on human intuition to stop mistakes a person might catch at the CLI. Your code is going to do exactly what you tell it to do – good or bad! So be very careful!
Ansible also has —check mode. So you can do a safe, “dry run “ of your code. To perform QA and work out any issues in advance of a real release in production. Take advantage of check mode as a beginner !
The check mode is to check for errors, right?
Yes and syntax and scope it actually does every step (task) in your playbook, Without actually pushing data. Which is great for testing or training or just to check that your syntax is all good in YAML.
You can also limit the scope of a playbook, with —limit, to test on a single host first. Then you can release at scale after validation on a single device! Also handy for beginner.
In regards to reading official study guides or documaentaions, are you much of a note taker or you read and go implement straight up, or a mix of both?
A bit of both – I like to comment my code heavily as a way to remind myself what logic is doing and when I study new Cisco stuff like ACI I take a LOT of notes.
Recently I started to keep my notes in markdown format. Inside a Git repo! Which is a nice way to version control my thoughts and notes and stuff lol.
Keeping your notes in a git repo! That is so badass! 😂🔥🔥🔥
Yes Git is incredible and I thought keeping a central repo of my notes fit perfect with Git ! Now I do pull requests to keep track of new code or new learning.
It’s been very effective for me and then I can “share” my notes -people just do a Git clone then they have my notes.
And here is the secret to my success – I’m lazy!!! I automate because I would rather have a robot do my work for me!! So don’t underestimate being lazy! Or mixing up efficiency for laziness!
I’m joking but it’s all about using the time you have been given to it’s maximum potential! Automation lets me focus on the real important stuff instead of doing repetitive tasks.
Is it possible for me to have a sneak peek of one of your notes? I’d like to share it too
Ah it’s a private repo at work sorry it’s not public yet.
Alright. John, thank you for your time!!. I have learnt so much today. I’m certain a lot of folks will too 💯
Thanks this was fun. And I’m always here to help.