I’ll publish a more detailed article about each step every week, please subscribe on the right hand side so you don’t miss out!
The great thing about this world is that there are a number of tools, systems and languages available and the combination of these are endless. I’ll list a few for each step and highlight my recommendation. If you’re starting your journey now, it’s safer to use these, but feel free to experiment and see for yourself.
step zero – be open and be patient
You may have designed dozens of networks, supported hundreds of devices and performed more overnight maintenances that you can even remember. However, you must not forget, you’ll have to come out of your comfort zone quite a bit. You will learn to look at your tasks, projects and designs from a new perspective.
Read the full blog post about STEP ZERO.
step one – create a sandbox
You need a safe environment where you can experiment. You’ll need administrator rights on this system and you should be easily recreate if something didn’t exactly happened as you expected.
- virtual Ubuntu 16.04 LTS on VirtualBox or VMware workstation
(my recommendation for beginners)
- vagrant + Ubuntu 16.04 LTS (for the more experienced)
- install linux set with dual boot (prepare to learn more about linux you may intended at first)
- docker (for advanced folks)
Read the full blog post about STEP ONE
step two – learn to code
The first thing you must understand, when you learn your first programming language, you don’t just learn to code in your chosen language. You’ll learn something much more important, that may change your life forever. You’ll learn algorithmic thinking. From this perspective it doesn’t matter which language you learn first. Of course some choices are better than others. High level programming languages are great as you can have a sense of achievement very quickly.
The best is if you find a tutorial or training and complete it fully. I linked a few CodeAcademy courses below and one my favourite free email course from Kirk Byers. This is how I got into Python.
Read the full blog post about STEP TWO
step three – learn to use version control
“Copy of Latest Document v1.1_1 newest by Csilla.docx” (42 pages)
Does it look familiar? I see this type of ‘versioning’ all the time and it just simply does not work. How do you know if this really the most up to date version? How do you know who changed it? How do you know what is the difference between versions?
“The Only Thing That Is Constant Is Change” (Heraclitus). Everything changes all the time, so why don’t we prepare for it properly. We need to keep our code and documentation in a safe place, which is available for others to use and contribute.
Here, I’ll only recommend to use only one thing. Git. There are other version control systems out there, but if you are planning to check out open source tools and frameworks later, you can’t really get away with not knowing how to use git to a basic level.
You can use GitHub or Bitbucket to store your code, but be careful, anything related to work may be better in a private code repository.
- git (my recommendation for everyone)
Read the full blog post about STEP THREE
step four – practice coding
Actively watch out for tasks every day that you can solve with a small script. It could be extracting data from text files or spreadsheets, getting BGP peering information from Peering DB or identify the devices that hasn’t got the latest management ACL as a preparation for your next change.
If you’ve completed a programming course, I am sure you’ve already forgotten half of it. This is just a nature of human brain and there is nothing wrong with that. You’ll visit documentation websites often or quickly learn that almost all questions have already been answered on stackoverflow. At this point you may find that your choice of language that you learnt in the beginning is not the best tool for the problems you’re trying to solve. That’s great. You can now learn another one. (No sarcasm!)
A scripting language is often not enough to solve a problem. Get familiar with markup languages and template engines. (JSON, YAML and Jinja2)
Read the full blog post about STEP FOUR
step five – practice version control
Keep everything in version control. Start with code first, but any text based document should be kept in git. Including your network configuration.
Read the full blog post about STEP FIVE
step six – learn about an open source framework and a library
There are plenty of open source frameworks out there. I will share my thoughts about third party/licensed tools later, but in a nutshell: there is no ultimate solution. The benefit of using an open source framework is that someone has already solved a problem and you can just use that without re-inventing the wheel. However, there is a tradeoff. There may be framework specific constraints or it may not be as flexible as hand crafted code, but most common tasks can be managed with them easily. A framework with an active community will have regular updates and you even can write custom modules or improve the software yourself and share it with others.
I linked a great Ansible training below by Kirk Byers.
step seven – share the love
You’re not supposed to be a lonely warrior. Share your success with your colleagues and leaders, show them how much you can get done with a different approach. They may be interested to join you.
I will stop here. If you got to step last, I am impressed. You came a very long way. You don’t need my advice anymore. Your gut feeling and experience and will guide you what to do next. Well done, you just completed network automation step by step guide.