Network Engineer w/ "DevOps" role - learning Ruby/Python/Puppet
hurricane1091
Member Posts: 919 ■■■■□□□□□□
Hello all,
Follow up to a previous thread of mine. I was recently offered a job being a network engineer on a small devops team. It would involve me eventually understanding Puppet. My current understanding is that Puppet uses Ruby (on rails). Not really a Linux guy (Linux +) and no programming ability to speak of, what is my recommended study path if I take this job? This is similiar to another thread on this forum, but I need a response to my specific situation. I am guessing I should start with learning Ruby and then Puppet. I am guessing Python may eventually work into the situation as well. As for Linux, I understand this is a giant Linux shop. I understand I'll need to work my way around a Linux box, but is it going to be necessary to start at Linux before the other things?
Very INTERESTING job here, but very scary. Overwhelming really, but this opportunity may never present itself again.
Follow up to a previous thread of mine. I was recently offered a job being a network engineer on a small devops team. It would involve me eventually understanding Puppet. My current understanding is that Puppet uses Ruby (on rails). Not really a Linux guy (Linux +) and no programming ability to speak of, what is my recommended study path if I take this job? This is similiar to another thread on this forum, but I need a response to my specific situation. I am guessing I should start with learning Ruby and then Puppet. I am guessing Python may eventually work into the situation as well. As for Linux, I understand this is a giant Linux shop. I understand I'll need to work my way around a Linux box, but is it going to be necessary to start at Linux before the other things?
Very INTERESTING job here, but very scary. Overwhelming really, but this opportunity may never present itself again.
Comments
-
Verities Member Posts: 1,162Well..you have Linux + so you should know enough about making your way around the system. I'd imagine the extent of your Linux work would be using Puppet from a Linux based host or a GUI and potentially reading log files. They'll most likely have you pushing configurations out to network devices and managing everything from the Puppet master, so I wouldn't sweat them having you provisioning Linux or working on config management for Linux systems.
So, it would be in your best interest to hammer Puppet into your brain and pick up what you need along the way. Puppet is written in Ruby (ruby on rails is a web development framework) but it has its own language format called DSL, so you don't need to become a Ruby developer to be a Puppet admin. You should learn how to install Puppet, how it works (push/pull), how to get certificates for the master and nodes, and how to read and write a manifest. Linux Academy has two puppet courses or you could just follow the documentation on the Puppet website using your own lab. Once you're familiar with Puppet, move on to learning Python; they probably want you to be proficient in scripting, not programming, with Python which anyone can do given enough focus. There are a lot of free resources out there to learn that as well: https://automatetheboringstuff.com/ and there's an excellent intro course on Safari Books Online by Jessica McKellar.
In a position like this you have to seriously put your nose to the grindstone if you don't know the technologies. The reason DevOps roles pay extremely well is because a lot is expected of you. -
sillymcnasty Member Posts: 254 ■■■□□□□□□□hurricane1091 wrote: »Hello all,
Follow up to a previous thread of mine. I was recently offered a job being a network engineer on a small devops team. It would involve me eventually understanding Puppet. My current understanding is that Puppet uses Ruby (on rails). Not really a Linux guy (Linux +) and no programming ability to speak of, what is my recommended study path if I take this job? This is similiar to another thread on this forum, but I need a response to my specific situation. I am guessing I should start with learning Ruby and then Puppet. I am guessing Python may eventually work into the situation as well. As for Linux, I understand this is a giant Linux shop. I understand I'll need to work my way around a Linux box, but is it going to be necessary to start at Linux before the other things?
Very INTERESTING job here, but very scary. Overwhelming really, but this opportunity may never present itself again.
Can I ask your salary? This is almost what I want to do and just about the same qualifications. I have CCNA and 3 AWS certs and am going to learn linux next up. When I learn linux I will start applying. -
hurricane1091 Member Posts: 919 ■■■■□□□□□□Well..you have Linux + so you should know enough about making your way around the system. I'd imagine the extent of your Linux work would be using Puppet from a Linux based host or a GUI and potentially reading log files. They'll most likely have you pushing configurations out to network devices and managing everything from the Puppet master, so I wouldn't sweat them having you provisioning Linux or working on config management for Linux systems.
So, it would be in your best interest to hammer Puppet into your brain and pick up what you need along the way. Puppet is written in Ruby (ruby on rails is a web development framework) but it has its own language format called DSL, so you don't need to become a Ruby developer to be a Puppet admin. You should learn how to install Puppet, how it works (push/pull), how to get certificates for the master and nodes, and how to read and write a manifest. Linux Academy has two puppet courses or you could just follow the documentation on the Puppet website using your own lab. Once you're familiar with Puppet, move on to learning Python; they probably want you to be proficient in scripting, not programming, with Python which anyone can do given enough focus. There are a lot of free resources out there to learn that as well: https://automatetheboringstuff.com/ and there's an excellent intro course on Safari Books Online by Jessica McKellar.
In a position like this you have to seriously put your nose to the grindstone if you don't know the technologies. The reason DevOps roles pay extremely well is because a lot is expected of you.
Very informative post - thank you. It would be a lot of work, but I would be willing to learn. They understand I have no scripting background and are OK with it. Exactly where do you see Python coming into play if I can ask? As for Linux, it has been awhile since I have done much in it. I am not overly concerned as I am always able to work my way around our Linux TACACS box when I need to. -
hurricane1091 Member Posts: 919 ■■■■□□□□□□sillymcnasty wrote: »Can I ask your salary? This is almost what I want to do and just about the same qualifications. I have CCNA and 3 AWS certs and am going to learn linux next up. When I learn linux I will start applying.
It pays $85k/year. It's probably less than someone should get if they were truly qualified for the position. I really applied for Network Engineer, and they went ahead and changed the title and description on me and this is kind of out of left field. -
sillymcnasty Member Posts: 254 ■■■□□□□□□□hurricane1091 wrote: »It pays $85k/year. It's probably less than someone should get if they were truly qualified for the position. I really applied for Network Engineer, and they went ahead and changed the title and description on me and this is kind of out of left field.
For me that would be a great number. We (might be) nearby. I'm in NYC so if I get 85k for not being fully qualified, I would be quite happy at the moment lol. Thanks very much. This will certainly help me study a lot more! -
hurricane1091 Member Posts: 919 ■■■■□□□□□□I live on the other side of the state near the other major neighboring city actually. I have never considered this type of role previously. If I took the job, I would be leaving a very traditional network engineering role for example. I find it to be a good opportunity for me to learn skills outside of networking, should this field ever go the way of the dinosaur it would probably serve me well to be useful in other areas.
-
networker050184 Mod Posts: 11,962 ModI wouldn't be too worried about learning Ruby to use Puppet. At least not in the beginning. I'd start just learning Puppet basics like roles, files structure, etc. like verities suggested. You're not likely to touch anything Ruby related unless you start writing custom modules.
On the network side I do most of my automation with Ansible. It's agentless which is nice if you have legacy devices hanging around that don't run a linux shell. Same with Puppet, you don't need to know how to program. Ansible is built on Python but I haven't had to touch anything Python wise to use it. Salt is another one gaining some popularity in the network world.An expert is a man who has made all the mistakes which can be made. -
hurricane1091 Member Posts: 919 ■■■■□□□□□□networker050184 wrote: »I wouldn't be too worried about learning Ruby to use Puppet. At least not in the beginning. I'd start just learning Puppet basics like roles, files structure, etc. like verities suggested. You're not likely to touch anything Ruby related unless you start writing custom modules.
On the network side I do most of my automation with Ansible. It's agentless which is nice if you have legacy devices hanging around that don't run a linux shell. Same with Puppet, you don't need to know how to program. Ansible is built on Python but I haven't had to touch anything Python wise to use it. Salt is another one gaining some popularity in the network world.
Can you point me in a direction to begin? I have no idea what they are looking to do in particular (they really do not seem to know either). I have not said yes to them yet, but I would like to. I spent the morning watching some YT videos about Cisco w/ Puppet. Any books, articles, etc you would recommend? Was looking on Amazon, but would prefer some real input from real people lol. Anything of particular interest you may be doing?
When you guys say that you do not need to know the language to use the program, I find it interesting. It would seem that I need to develop some sort of script to make things happen, and I would assume that script is written in whatever language. I am also curious about your experience transitioning into said role, as this is totally new for me (and probably new to most network guys).
Thank you again. -
networker050184 Mod Posts: 11,962 ModFor Ansible you can start here: Network Modules — Ansible Documentation
Say for example you wanted to automate BGP peers on an NXOS device. You know every leaf needs to have two peers, one to each spine. You can create a playbook to check/remediate BGP peers on leafs.
Use the example here to create a playbook for this: nxos_bgp_neighbor - Manages BGP neighbors configurations. — Ansible Documentation
- nxos_bgp_neighbor:
asn: 1
neighbor: "{{ item.neighbor }}"
remote_as: 1
description: "{{ item.description }}"
state: present
username: "{{ un }}"
password: "{{ pwd }}"
host: "{{ inventory_hostname }}"
with_items:
- { neighbor: '10.0.0.1', description: 'spine1'}
- { neighbor: '10.0.0.2', description: 'spine2'}
Basically anytime you run this playbook it will log into every leaf in your inventory, check it has these neighbors configured. If not it adds them. In the future you need to add spine 3 and 4 to all leafs? Just update your playbook and run it. No logging into devices needed. No Python knowledge needed for this either!
Pretty basic example, but you get this gist and you can build from there.An expert is a man who has made all the mistakes which can be made. -
Verities Member Posts: 1,162While I do normally suggest using Ansible since its so easy to learn and doesn't require an agent, but in this case start with the job specific technologies first.
Getting started:
https://docs.puppet.com/
Start from the bottom up and learn how to install Puppet, learn about the architecture, how to add nodes, and how to create a manifest. The most first manifest almost everyone recommends is installing Apache Web Server on a Linux host. Once you become familiar with those, you can look at the different modules available for things like Cisco switches, etc.
Python can be used as an alternative to Puppet or Ansible, so you'd basically be creating scripts that could essentially do the same thing. Most job postings are like throwing spaghetti at a wall; if they found a network engineer that could script with Python, great! If they found a network engineer that could use Puppet, great! -
hurricane1091 Member Posts: 919 ■■■■□□□□□□Great stuff here, thank you again. It is hard to know exactly where this is headed right now, which makes it difficult to pinpoint where to begin. My understanding is their network engineer has no interest in scripting, which is why this became available.
-
ccie14023 Member Posts: 183I did a demo of Puppet on Nexus here:
https://www.youtube.com/watch?v=d4mYVjgyO_0
The agent runs on a container on the device. Expect to see something like this on IOS-XE some day, but can't promise it.
See also the Puppet docs here:
https://docs.puppet.com/pe/latest/install_nxos.html
Check out Cisco DevNet, developer.cisco.com as well.
Ruby is not necessary, as others have said. You may also check out the Puppet learning VM. It was great and helped me with the demo. -
hurricane1091 Member Posts: 919 ■■■■□□□□□□I did a demo of Puppet on Nexus here:
https://www.youtube.com/watch?v=d4mYVjgyO_0
The agent runs on a container on the device. Expect to see something like this on IOS-XE some day, but can't promise it.
See also the Puppet docs here:
https://docs.puppet.com/pe/latest/install_nxos.html
Check out Cisco DevNet, developer.cisco.com as well.
Ruby is not necessary, as others have said. You may also check out the Puppet learning VM. It was great and helped me with the demo.
I watched that video already today actually, that's you? Small world! Good video!