Building Network Automation Solutions Review
I’ve recently completed the Building Network Automation Solutions course provided by IPSpace and thought I would provide a review of the course and my experience.
About The Course
In the following sections, I will break down the aspects of the course and what I experienced from the course.
This course is self-paced and all content, exercises and assignments are available for you to access at any time. I started the pre course work about four months before the ‘official’ start of the course. I’ll get onto this more later.
If you are juggling work and personal commitments, this flexibility allows you to not be tied down to specific time windows. This learning style appealed to me and the flexibility to get ahead of the schedule or fall behind!
The amount of content available in the course is substantial. There is the right level of detail and the course structure is sequenced in the most logical way to be as efficient as possible. At the start, I couldn’t see the forest for the trees, but I had so many “aha” moments where things I had been learning tied together just at the right time.
If you are well versed in individual subjects, you can always skip those sections where it makes sense so you can use your time wisely.
The quality of the content is at a very high standard. There are always relevant examples for key content and reference solutions to assist you in comprehending the topic(s). I didn’t notice any typos, poor formatting or disjointed presentations (think long pauses or things not working) which indicates that the content is mature and real care has been put in to producing quality content.
The guest speakers on offer are a real highlight of the course. All the speakers in the offering of my course were of the highest quality in terms of:
- Industry experience
- Standing within the network automation community
- Presentation content
- Candid and charismatic delivery
- Genuine passion and commitment to progressing the movement
All the presentations were thought provoking and stimulating which showed that these presenters are operating on another level, certaintly well above myself.
Unfortunately due to the timezone I’m in, I was unable to attend the sessions live but the recordings meant I was able to consume these later on. You can always ask questions to the presenters after in the private Slack channels for the course as well.
The sequencing of the assignments is logical and as the assignments progress, they increment appropriately in terms of effort and complexity. Each assignments builds on skills or solutions in previous assignments and then adds another layer of learning.
Whether it’s intentional or not, the assignments follow how one would develop automation solutions in the real world. That is:
- Start with read-only tasks (audits, compliance, config retrieval)
- Define a data model for your automation task(s)
- Build something to automate changing network configuration or state
- Validate what you built is successful, adding testing and logging to round out the solution
My favourite feature of the course was getting assignments reviewed by Ivan himself. I found all the feedback constructive, but most importantly I wasn’t just handed the solution. There were clues or hints on where to improve, then it was up to me to take that information and address the issue.
Learning by doing, experimenting, failing then eventually succeeding reinforced my knowledge and has given me confidence to talk to my solutions when speaking to others.
Apart from getting feedback on my assignments, the private Slack channels for the course were active from people in the course and both past guest speakers and past students.
Help wasn’t hard to find and people chip in wherever they can.
When evaluating any course, price is always a concern. At initial analysis, the price compared to what value you may extract seems to be questionable.
I’d probably have three counterpoints to this view.
Firstly, IPSpace offer tiered pricing whereby the earlier you get in, the earlier you pay. This is a fair proposition and I saved $700 USD by registering at the Enthusiast Price.
Secondly, at the time of writing, you have lifetime access to any existing and new content made available by the course. Think about whenever a new technology or a new approach is released into the industry, you are highly likely to get these updates for free. An immediate example of this is when there are changes in networking modules in newer versions of Ansible, IPSpace update this content and you have access to it for free. This second point is going to be hard to appreciate until you’ve gone through the course and see the amount of detail in it for you to consume. Trust me when I say that this is a great feature.
Thirdly, the future guest speakers’ content will be available to you for free. So if you complete the course, then a great new open source product like Nornir is released, you are highly likely to gain access to presentations about it.
Tips and Lessons for the Course
Below are some tips and lessons learned I have had from the course. Some of these may not apply to you depending on how competent you already are but the order I’ve laid out below should be of help:
Tip 1 - Do a self-assessment
Reflecting on the course, I would recommend doing a self-assessment prior to starting the course. Firstly, below is an arbitrary self-rating system I made. Adjust it as need be:
|0||No idea of product or concept, is this even spelt right?|
|1||Heard of product or concept, haven’t fully grasped it.|
|2||Understand the product or concept or have seen it in use.|
|3||Have used product or concept, can understand what it is at a basic level.|
|4||Competent with product or concept, have used some more advanced features and could explain it to someone else.|
|5||Have reached mastery level and manage/mentors others on the product or concept.|
And below are my self-ratings:
|Git||1||Installed Git, have done a ‘git clone’ before. That’s it.|
|Ansible||2||Played around with it, never got anything working.|
|YAML||2||Played around with the files, can read them I think?|
|JSON||2||Seen these before, can read them but find long files hard to understand|
|Data Models||2||Developed some before using Python|
|Continuous Integration Testing||1||Ah the butler thing and the builder with the moustache. Yeah…?|
The reasoning for doing this is to be realistic about where you’re skills are at. This will guide how much ground work you probably should do prior to the official start.
As you can see, I had a fair way to go!
Tip 2 - Set out a plan to get through the course work
Based on your self rating, set yourself out an achievable plan to get through the pre-course content over a period of time. If you were an amateur like myself, give yourself time to work through the content in terms of effort and elapsed time.
One of the benefits of signing up early is that I could start immediately on getting through the lessons. This meant that the content was less daunting and I had time between lessons to absorb what I was learning. I like to be proactive and stay ahead so I started in early November, had time off over Christmas/New Year and got through the pre course content around February. This meant I was in a position to get great value out of the presentations as I understood the basics to an acceptable level.
Tip 3 - What do you want to achieve?
The beauty of this course and in particular the assignments is that there are very broad limits on what you can achieve or submit in your assignments.
I suggest trying to think about a problem that you would like to solve with automation. Then, perhaps thinking about the tooling you might use to achieve that solution. I’ve listed this tip as number 2 because during the pre-course work, you are exposed to numerous tools which are out there that you may or may not be aware of.
For example, I wanted to all my solutions to be multi-vendor in nature and to extensively use NAPALM in my solutions. Being a consultant, I don’t get the chance to work in single vendor environments so I wanted to make sure that I could cover off more use cases. I also wanted to spend more time using Junos and EOS operating systems as I haven’t had much previous experience with them.
Finally I wanted to build a core structure, applicable to most environments. Then, where necessary extend functionality for individual networks or use cases.
Tip 4 - Read all the assignment topics, before you build you lab
Take the time to read through the assignments before building your lab topology. You don’t want your solutions to be so generic that you don’t develop anything meaningful, but not so specific that it’s hard to data model, validate or test.
Other items to consider are where you are going to spending the majority of your time building solutions and how you might access your lab.
I used an Intel NUC with Eve-NG which allowed me to keep it running whilst using my laptop for other purposes.
Tip 5 - Write a TODO list for each assignment and maintain during the assignment
I only started this at Assignment Four, but I found that writing a TODO list helped me in figuring out the steps I needed to do in order to build the entire solution.
Start with an overall statement with what you want to achieve, then underneath that, list out some sub-tasks needed in order to achieve the statement. Below is an example for the Easy Wins assignment in retrospect:
I want to build a multi-vendor compliance solution which checks the configured NTP servers against an approved list of NTP servers and produce a report of compliance/non-compliance.
- Define the approved list of NTP servers.
- Work out where these approved NTP servers should be stored (host_vars directory, group_vars directory, JSON file?).
- Start with one vendor and work out how to retrieve the current configured NTP servers.
- Work out how to compare the configured NTP servers vs approved NTP servers.
- Work out how to dump this raw output to a file.
- Repeat Steps 3 to 5 with all other vendors.
- Work out a way to refine the output in a more readable, report style format for each individual device check.
- Work out a way to compile all individual reports into one single report.
- Differentiate your report so it’s clear when something is compliant and non-compliant.
- “Break” some of the NTP configurations and ensure your reports indicate these failures correctly.
Once you have a similar list, you can now segment up the assignment and make progress in smaller, manageable components.
When I was completing Assignment Three, I wasted a considerable amount of time trying to do everything at once instead of incrementally building my solution. Something like this would have helped focus my efforts and increased my efficiency.
Tip 6 - Assignments and guest speakers come thick and fast
When the official course starts, there is a guest speaker every two to three weeks. In amongst this, you will need to work through the theory content for each assignment and complete these as well.
Depending on your individual situation and your applicable solution, this can require a decent amount of your time each week.
As mentioned earlier, you can mitigate this by getting ahead before the official course start date by getting your lab ready. You can perhaps at least start your first assignment, Easy Wins which is performing read-only operations on your lab.
Tip 7 - Be prepared for some wild goose chases and dead end streets
In almost every assignment, I would get stuck on a particular sub-task. Some took me a few hours to resolve, some took days to resolve and some others I just needed to take a break from the code and come back with fresh eyes to see the problem.
In all cases, it was down to things like ignorance, misreading documentation, not understanding a concept, experimentation, being impatient and skipping steps in the process.
It would be prudent to factor some time in for this inevitable outcome in performing this course because there will be things that you get stuck on.
For example, I spend hours and hours getting TravisCI to work for my Assignment Five. I just had to keep chipping away at the problem, re-read some documentation, do some experimentation and troubleshooting.
One of the issues I had was that my
.travis.yml file wasn’t in the root of my repository.
This minor issue was only a sub-task but without it I couldn’t progress.
Tip 8 - Finish with performing another self-assessment
It’s pretty easy to just move on with the next thing in life and not reflect upon what it is that you have learned. So below is my self-assessment, this time after finishing the course:
|Git||4||Used this significantly now, even have my own branching strategy for developing code during my assignments. I also raised a Github issue as well.|
|Ansible||4||Have developed playbooks and have worked out how ways to optimise the speed of those playbooks.|
|Jinja2||4||Used conditional Jinja2 statements and the IP address filter to dynamically allocate IP addressing.|
|YAML||4||Can read and understand YAML files. Used this knowledge on another project I’m developing using Nornir.|
|JSON||4||Understand JSON files now, in fact used JSON to build this website.|
|Data Models||4||Build quite a few data models, understanding the trade-offs between abstraction and complexity.|
|Continuous Integration Testing||3||TravisCI is used for all pull requests and merge requests in my repo. Only doing basic linting checks but now can understand the
Feel free to checkout my Github repo to see some of the solutions I built.
To summarise, I found the Building Network Automation Solutions course to be a worthy investment of my time and money.
Not only have I learned numerous new skills, I have learned many other invaluable lessons on how to think about automation, how to develop solutions and how to build robust solutions.
The entire experience has given me a fresh impetus to continue the network automation journey and continuously improve and refine my skills.
I highly recommend this course to anyone who is looking for a comprehensive offering, no matter where you are starting from.