Network Enhancers - "Delivering Beyond Boundaries" Headline Animator

Saturday, January 10, 2015

A NetOps to DevOps Training Plan

Courtesy - Dave Trucker

My recommendation was basically for Networkers to be open to change, and to start broadening their horizons. DevOps is coming to networking and that is a FACT. You might be wondering what skills a Network DevOps Engineer needs and here I attempt to answer that.

It's still about NETWORKING

I'm going to state this upfront here. You need to be good at Networking for any of the other skills here to be useful. Continue along vendor certification tracks, follow the IETF, join NANOG, experiment with new technologies. This is all invaluable.

Software Engineering Fundamentals

A lot of the DevOps skills have roots in Software Engineering. Being a Network Guy ™ this may seem like a little bit of a paradigm shift but here's something cool. Would you believe that some of these software engineering concepts have more to do with engineering best practice than with software, and are in fact relevant to the work you are doing today? Also, your SysAdmin buddies already know this and started their DevOps pilgrimage a while ago.

Unit/Functional/Integration Testing, Version Control, Agile, Test-Driven Development (TDD) and Behaviour Driven Development (BDD) are all things that you could benefit from today.

Fortunately, there is an easy way to pick these skills up. The folks over at Software Carpentry have put together a set of Tutorials to help research scientists get to grips with Python and supporting tools. The Lessons are put together in such a way that they are easy to understand for mere mortals (unlike a lot of CS textbooks/lectures)

Know your *nix

An understanding of Linux is going to stand you in good stead in the transition from NetOps to DevOps. As much as people like to talk about "Death of the CLI" they don't realise how much time Developers and SysAdmins spend in the Terminal. Whether this be checking in code with git, extracting information from Open vSwitch or using the OpenStack CLI clients you will likely spend a lot of time in the terminal too. Learning how to be productive here is essential and a good understanding of Linux will help when troubleshooting complex issues.

LPIC

There are vendor neutral *nix certifications which are worth a look like LPIC-1. While I haven't gone through this myself, I have read some LPIC study materials and found this infinitely useful. If you want a vendor certification, Red Hat have certifications available too.

Have some fun

Learning Linux doesn't have to be boring. I prefer a more practical approach so you may find attempting one of the following a nice project to hone your Linux-Fu:


  • Install Arch Linux
  • Replace your ESXi Lab with KVM, Libvirt and Open vSwitch
  • Write command aliases to save yourself some typing
  • Learn vim, and make yourself a .vimrc


Learn some Python

I'm biased towards Python, but I feel it's the most approachable Programming Language for Network Engineers to pick up.


  1. It has an "Interactive Interpreter" which is a lot like a CLI and let's you enter statements to see what happens
  2. It can be used to basic scripting or beautifully designed object-oriented software but it doesn't force you to do things one way or another.
  3. There is a rich ecosystem of libraries that simplify doing everyday tasks
  4. It's being embedded in Network Devices AND network vendors are providing Python libraries for their software.


You don't need to know Python much to start getting real value. Think of how many things you could automate! People joke about automation not saving time (as it takes time to automate) but during that time you are getting a better understanding of Python, so it's not a total loss. Whether it's your weekly report, Mining the Social Web or something more Network-centric, undertaking a Python project will be really worthwhile... and if you can, host the result up on GitHub.

There are hundreds of good tutorials online, but if you are just getting stated I would recommend CodeAcademy.

Get your head around "Infrastructure as Code"

"Infrastructure as Code" is the battle cry of DevOps. To really understand what this is about and to get a handle on the what/why/how for Networking I'd recommend that you spend some time with:




Run through the tutorials, boostrap a server with Chef, use Puppet to deploy a LAMP server and if you are feeling brave, write a Chef Cookbook/Puppet Manifest. I couldn't mention this and not mention the awesome working being done on the Netdev library for Puppet and Chef.

What about some SDN?

You could take a course on Coursera, but why not get some practical experience? Download OpenDaylight and follow one of Brent Salisbury's awesome tutorials. You can simulate massive networks using Mininet and have some fun pushing paths using the REST API or experimenting with OpenStack integration. The nice thing about the OpenStack integration piece is that this requires you to get DevStack working, which is not easy, and it gives you some OpenStack experience.

Conclusion

Looking in to my crystal ball, I would predict that the Network DevOps engineer will need:


  • Strong Networking Skills
  • Knowledge of Linux System Administration
  • Experience with Puppet/Chef/Ansible/CFEngine/SaltStack would be desirable
  • Scripting skills in Bash, PHP, Ruby or Python
  • Ability to work under Source Control (git)
  • Experience in consuming (REST) APIs
  • Experience with OpenStack and OpenStack Networking
  • Appreciation of Software Defined Networking (SDN)
  • Knowledge of Agile Methodologies
  • Knowledge of Test-Driven Development
  • Ability to write Unit and Integration Tests



Appendix A: Relevent Open Source Projects




Appendix B: Tools of the Trade




Appendix C: Further Reading

Kyle Mestery (@mestery) pointed me to a great slide deck that show his thoughts on this topic. This is definately worth a look!


8 comments:

  1. Good efforts!!!
    Hey did you hear about Chef Fundamentals Training ? ITS announces the public batch for Devops- Chef Fundamentals training in gurgaon from 12th to 14th June 2015.

    ReplyDelete
  2. Thank you. Your blog was very helpful and efficient For Me,Thanks for Sharing the information Regards ,devops training in hyderabad

    ReplyDelete
  3. Devops is an operational viewpoint that progresses better communication amid development and functions. This is great blog on Devops programming language.

    ReplyDelete
  4. Nice information about devops tutorials. thanks a lot shared valuable information. Really helpful for me. keep sharing on updated devops tutorials............

    ReplyDelete
  5. Thanks for sharing the very useful info about DevOps and please keep updating........

    ReplyDelete
  6. Intellipaat turned to be one of the best training provider among all and very comprehensive and affordable prices are available.

    ReplyDelete

My Blog List

Networking Domain Jobs