Bored Network Engineer -> DevOps Engineer? How?

nickelitonickelito Member Posts: 54 ■■□□□□□□□□
Hello everyone,

I am currently employed as a network engineer and have been so the past 6 years.
I am starting to feel pretty bored with just switching/routing/some security work and would like to become broader / generalist.

What skills would I need to pick up to become a DevOps engineer?
I am studying Python, Linux and Openstack on my spare time but i guess there is more to it..

What would be most important to learn? I already got the networing part down cold :)

Any advice would be appreciated!

Comments

  • networker050184networker050184 Mod Posts: 11,962 Mod
    I've recently started making a similar transition myself to more of a hybrid role myself. Python, Linux and Openstack are great starts. Puppet, Ansible, Chef etc. Public cloud offerings (AWS, Azure, GCE) are needed skills.
    An expert is a man who has made all the mistakes which can be made.
  • kohr-ahkohr-ah Member Posts: 1,277
    Agree with what networker said:

    Start with Python, Linux, and Ansible (Or Puppet, Chef, Salt, Whatever flavor you want to know) is a great start.
    Go into AWS, Azure, GCE
    Learn APIs and how they work and how your scripts can interact with them
  • nickelitonickelito Member Posts: 54 ■■□□□□□□□□
    Thanks for your input guys.
    I just find it a bit vague, coming from a cisco background where youre more or less told which books to read, you know..
    "learn linux"... "learn python".. "learn dockers"...
    I mean I could spend 2 years learning python and still not know half of whats required out of someone who "knows python"..

    I found that my biggest problem is that I have a hard time seeing the bigger picture when stuyding these topics.
    When I studied for CCNA or CCNP i was dead sure what the fruit of my efforts would be..
    but lets say i spend 6 months studying Python, or 6 months studying RHCSA... I cant visualize right now what that would bring me.

    So I am deep into some stupid Python game and lift my eyes form the screen and hear myself think "what.. the hell.. is this"...
    If I am going to get a job as a network engineer with python skills im not gonna make a ******* tic-tac-toe game, I need some real **** to practice.

    But all the networking/python stuff i found to practice are lame.. ssh to a device with a 40 line script.. yeah i can do that in 1 line WITHOUT python, thanks but no thanks.

    you see what im talking about? i need to know where the hell im going before im getting on the horse and start skimping south.
  • networker050184networker050184 Mod Posts: 11,962 Mod
    I definitely know what you're talking about. It was a struggle for me at first as well going though multiple tutorials learning the same concepts but them not really getting me where I wanted to be. Only so many times you can learn about printing numbers!

    What I did was just jump in head first and start making stuff. I made some simple config generators, made a script to push mass config changes, pre/post maintenance verification scripts, scripts to pull info from our inventory system API to help fill out the device lists etc. Then I wanted to put a web front to some of the stuff so started messing with some web frame works. Bottle is a very simple python web framework I started with. That got me more into working with web servers which of course run on linux. I'm still no expert, or even a moderate level programmer or linux admin, but I can work my way through simple real world problems and hack together examples from the internet. A lot of the config related stuff I initially started working on I'm looking to replace with ansible/napalm now, but it was a great learning experience.

    So my advice is just start making stuff that will help you do your job now. Solve problems. I found once I started tackling real problems all the pieces started to fall in line better. Still banging my head against the wall a lot of the time, but I've come a long way.
    An expert is a man who has made all the mistakes which can be made.
  • jdancerjdancer Member Posts: 482 ■■■■□□□□□□
    If you are looking for a hands-on exercise, do this:

    Set up the following environments:

    1) Ansible Server
    2) Git Server
    3) Jenkins Server

    Create configs for switches/routers using Ansible. Push the configs to Git. Have Jenkins monitor the Git repo and push the changes to switches and routers.

    Congrats, you learned the basics of continuous integration/continuous deployment. Next step: do the same setting up a server.

    I recommend this resource https://github.com/geerlingguy/ansible-for-devops
  • sj4088sj4088 Member Posts: 114 ■■■□□□□□□□
    kohr-ah wrote: »
    Learn APIs and how they work and how your scripts can interact with them

    Is there a good resource for that?
  • MitechniqMitechniq Member Posts: 286 ■■■■□□□□□□
    jdancer wrote: »
    If you are looking for a hands-on exercise, do this:

    Set up the following environments:

    1) Ansible Server
    2) Git Server
    3) Jenkins Server

    Create configs for switches/routers using Ansible. Push the configs to Git. Have Jenkins monitor the Git repo and push the changes to switches and routers.

    Congrats, you learned the basics of continuous integration/continuous deployment. Next step: do the same setting up a server.

    I recommend this resource https://github.com/geerlingguy/ansible-for-devops

    That is exactly how I started to incorporate DevOps and CI/CD into admin work. LinuxAcademy has some great training modules on each of these tools.
  • VeritiesVerities Member Posts: 1,162
    nickelito wrote: »
    Hello everyone,

    I am currently employed as a network engineer and have been so the past 6 years.
    I am starting to feel pretty bored with just switching/routing/some security work and would like to become broader / generalist.

    What skills would I need to pick up to become a DevOps engineer?
    I am studying Python, Linux and Openstack on my spare time but i guess there is more to it..

    What would be most important to learn? I already got the networing part down cold :)

    Any advice would be appreciated!

    I'd like to share some insight on what exactly DevOps is because it takes some time to fully understand the abstraction of the concept. Its basically about breaking down the barriers between operations and development. You need to know a little sys admin and a little bit of coding since you normally have admins and developers working side by side.

    They use terms like "Configuration management" which is intended to get all of your configs in line so that your environment is exactly the same across the infrastructure (my favorite is Ansible, but Puppet is by far the most deployed). If errors pop up with your company's software, you can eliminate things very quickly; this makes systems administration much easier than it used to be. "Continuous integration" has to do with pushing new software features and patches out as fast as possible, while providing QA for them (Jenkins is the best use case for this and is a very powerful tool), while Git plays a role of a repository that keeps track of changes of your code. All of these technologies are built on Linux because its efficient and tuneable, while most of the time its deployed on AWS (public/private cloud and/or for BCP/DR) or OpenStack (private cloud). You'll need to be flexible and understand how to read scripts as well as create them....most companies insist you can write BASH scripts and are able to understand Python, Perl or Ruby as well.

    All of the above is why people in those positions easily make six figure salaries. This is not a quick process and can take years of work experience to achieve; most people don't just jump right into it. I did the same thing as Miteq and jdancer are describing, which consists of one project at a time and integrate them into your current work environment so you understand how they are utilized. I also concur that Linux Academy has a ton of good training for everything that was mentioned in this thread. If you want to learn Linux, I actually recommend taking the LFCS and then the LFCE course. Along the way you should take the "quick start" videos for the above mentioned technologies to see if they still interest you.
  • sj4088sj4088 Member Posts: 114 ■■■□□□□□□□
    So continuous integration is pushing new software features and patches out as soon as possible using jenkins. What about continuous deployment? How would you describe that?
  • VeritiesVerities Member Posts: 1,162
    Its very similar as continuous integration and continuous delivery work hand in hand. Continuous deployment would be pushing the code to production systems.
Sign In or Register to comment.