Gearing up for DevOps

RHELRHEL Member Posts: 195 ■■■□□□□□□□
Morning all.

Reflecting on my now 8 year career as a UNIX engineer, I am quite sure I will be ready for a change soon. I'd like to drop the on-call, but I don't see that happening too easily. If anything, I just want to switch things up... Oh, and make more money. :)

I'm not a programmer, but do have a solid understanding of the fundamentals. I'm quite good at shell scripting, and very good at automating things. In fact, I've made it a general rule as a lazy/efficient sysadmin that I automate any task that has to be done more than three times. That being said, I think I'd like to give DevOps a try.

I feel like now is a great time to utilize all of the training resource my company is throwing at us for Red Hat, but need some direction for where to start. I want to utilize the Red Hat Learning Subscription my company has purchased for me, if possible (allows unlimited access to any Red Hat course).

I've already taken the sysadmin courses, am ready to sit for the RHCE exam and am proficient using Satellite and Red Hat Enterprise Virtualization platforms; however, which other classes/subjects do I need to focus on for jumping into DevOps in the next year or two?

There's ~8 separate courses on OpenStack, so I figure the administration courses would be a good place to start. There's also several courses on OpenShift.

There's also a course on Puppet as well as Ansible. Which would be better to focus on?

Finally, I'm going to make an effort to develop some solid Python skills. Anything else? Am I on the right track for this?

Comments

  • RHELRHEL Member Posts: 195 ■■■□□□□□□□
    Here is the list of full Red Hat courses the learning subscription provides access to. Python will have to be learned externally:

    Already Taken:
    RH124: Red Hat System Administration I
    RH134: Red Hat System Administration II
    RH199: RHCSA Rapid Track
    RH254: Red Hat System Administration III
    RH299: RHCE Certification Lab
    RH318: Red Hat Enterprise Virtualization
    RH403: Red Hat Satellite 6 Administration

    Available:
    CL110: Red Hat OpenStack Administration I
    CL210: Red Hat OpenStack Administration II
    CL220: Red Hat CloudForms Hybrid Cloud Management
    CL275: OpenShift Enterprise Development
    CL306: Neutron Networking with Red Hat Enterprise Linux OpenStack Platform
    CL310: Red Hat OpenStack Administration III
    CL314: Apache Qpid Messaging with Red Hat Enterprise Linux OpenStack Platform
    CL315: RabbitMQ Messaging with Red Hat Enterprise Linux OpenStack Platform
    DO276: Containerizing Software Applications
    DO280: OpenShift Enterprise Administration
    DO290: OpenShift Enterprise Development
    DO405: Configuration Management with Puppet
    DO407: Automation with Ansible
    JB225: JBoss Enterprise Application Development I
    JB232: Monitoring with JBoss ON
    JB234: Systems Management with JBoss ON
    JB248: Red Hat JBoss Application Administration I
    JB325: Red Hat JBoss Enterprise Application Development II
    JB348: Red Hat JBoss Application Administration II
    JB417: SwitchYard Development with Red Hat JBoss Fuse Service Works
    JB421: Camel Development with Red Hat JBoss Fuse
    JB427: Developing Workflow Applications with Red Hat JBoss BPM Suite
    JB435: Enterprise Service Bus Deployment with Red Hat JBoss Fuse
    JB437: Red Hat JBoss A-MQ Development and Deployment
    JB439: Red Hat JBoss Fuse with Red Hat JBoss A-MQ and Camel
    JB450: Red Hat JBoss Data Virtualization Development
    JB453: Red Hat JBoss Data Grid Development
    JB461: Authoring Rules for Red Hat JBoss BRMS
    JB463: Developing Rules Applications with Red Hat JBoss BRMS
    JB465: Implementing Red Hat JBoss BRMS
    JB501: Building Advanced Red Hat Enterprise Applications
    RH236: Red Hat Gluster Storage Administration
    RH270: Managing Containers with Red Hat Enterprise Linux Atomic Host
    RH342: Red Hat Enterprise Linux Diagnostics and Troubleshooting
    RH413: Red Hat Server Hardening
    RH436: Red Hat High Availability Clustering
    RH442: Red Hat Enterprise Performance Tuning
  • VeritiesVerities Member Posts: 1,162
    I prefer Ansible over Puppet and I recommend the same to you since Ansible is written in Python, you intend to learn Python, and its agent less (think performance). I can spin up an Ansible master node and be pushing out changes to all my systems within a matter of minutes (no joke!). I used Ansible Tower briefly and really didn't like it, so I do everything via the command line. However, if you have Satellite 6 in your environment, it might be worth it to pursuing Puppet instead. They are both great choices and having either one or both under your belt is going to benefit you. You could even try using Ansible for your day to day sys admin tasks across all your systems and use Puppet specifically for ensuring positive control of your server side configurations.

    Maybe do an intro to OpenStack (IAAS) and skip the rest then move to OpenShift (SAAS), since that's more DevOps related (Kubernetes + Docker). The next part is up to you since you're already proficient in BASH, you have all the fundamentals of programming, now you just need to pick another language...Red Hat has a lot of Java based development courses (JBOSS) so that's another option to pursue over Python. Also, Jenkins is a huge asset in your skill set, but it is definitely intimidating to learn (at least to me) since its so powerful.

    Here's a pretty generic job posting that you can use as a framework for a DevOps role that I copied from Indeed:

    The position involves the following day to day responsibilities:

    • Structure and maintain the software configuration management system
    • Automate and maintain the software build process
    • Automate software deployment and monitoring
    • Automate software testing at multiple levels (component, configuration item, subsystem, system) and monitor results
    • Monitor site stability and performance and troubleshoot site issues
    • Scale infrastructure to meet rapidly increasing demand
    • Collaborate with developers to bring new features and services into production
    • Provide support to development teams that use the automated infrastructure
    • Develop and improve operational practices and procedures




    Qualifications:


    • Experience in 24x7 production operations, preferably supporting a highly available environment for a SaaS or cloud service provider.
    • Knowledge of cloud infrastructure environments (e.g. AWS, Azure)
    • Container based architecture and deployments (Docker, Ansible, etc.)
    • Release automation (e.g. Jenkins), system administration, system configuration, and system debugging experience.
    • Experience using scripting languages (Ruby, Python, etc), configuration management tools (Git, ClearCase, Chef, Puppet, etc) and command execution frameworks.
    • Knowledge of automated code review and testing tools (e.g. Smartbear, Cucumber)
    • Knowledge of workflow tools (e.g. Atlassian)



  • DoubleNNsDoubleNNs Member Posts: 2,015 ■■■■■□□□□□
    You should try to learn both Puppet and Ansible, tho feel free to focus on the one that you enjoy more. Personally, I like using Salt[Stack] as my configuration management solution.

    Python is a great skill to pick up, or Golang. If you're already good at shell scripting and have programming fundamentals down, you should be able to quickly get into one of those 2 languages.

    Docker, AWS (/Azure/GCP), monitoring, and Git are also great supplemental skills to learn.

    Red Hat also has an RHCA DevOps certification, but I have no idea what the objectives are.
    Goals for 2018:
    Certs: RHCSA, LFCS: Ubuntu, CNCF CKA, CNCF CKAD | AWS Certified DevOps Engineer, AWS Solutions Architect Pro, AWS Certified Security Specialist, GCP Professional Cloud Architect
    Learn: Terraform, Kubernetes, Prometheus & Golang | Improve: Docker, Python Programming
    To-do | In Progress | Completed
  • DoubleNNsDoubleNNs Member Posts: 2,015 ■■■■■□□□□□
    The Server Hardening, RabbitMQ, and High Availability courses look good from that list you posted.
    Goals for 2018:
    Certs: RHCSA, LFCS: Ubuntu, CNCF CKA, CNCF CKAD | AWS Certified DevOps Engineer, AWS Solutions Architect Pro, AWS Certified Security Specialist, GCP Professional Cloud Architect
    Learn: Terraform, Kubernetes, Prometheus & Golang | Improve: Docker, Python Programming
    To-do | In Progress | Completed
  • UnixGuyUnixGuy Mod Posts: 4,570 Mod
    Finish RHCE first.

    Puppet vs Ansible ===> Pick the one you use at work. Puppet seems more popular tho.

    I would gear up on AWS as well.
    Certs: GSTRT, GPEN, GCFA, CISM, CRISC, RHCE

    Learn GRC! GRC Mastery : https://grcmastery.com 

  • RHELRHEL Member Posts: 195 ■■■□□□□□□□
    Excellent advice, all. Thank you very much!

    I do plan on getting my RHCE very soon. My work will pay for it, the only problem is that I have to travel 4 hours each way by car and stay overnight to take the exam! It's just hard to schedule time for that. I took the RHCSA a few weeks ago and it went well.

    I think I will have more work support for learning Ansible over Puppet, at least for now. The reason being that Red Hat now owns Ansible and plans to integrate it into Satellite at some point in 6.3. I've also built and am testing out Ansible Tower in our lab environment. At the moment, we have BigFix (crap product, mainly to automate AIX patching), and utilize a mixture of NIM initiated scripts and ssh loops to automate tasks. Environment is about 500 UNIX servers.

    OpenStack and OpenShift definitely seem like good options. I would like to learn some AWS/Azure, though we don't currently utilize public cloud solutions.

    Seems like I have a good foundation for DevOps, but still a lot to learn. I'd be looking to get my foot in the door and also learn a lot as I go, probably within the next year or two. I'd also be looking to relocate, so hopefully that will help me with potential opportunities!
  • sp00nfeedersp00nfeeder Registered Users Posts: 3 ■□□□□□□□□□
    I'm not a programmer, but do have a solid understanding of the fundamentals

    What criteria do you use to decide if you're going to label/categorize yourself as a "programmer"? What if you already are one?
  • sp00nfeedersp00nfeeder Registered Users Posts: 3 ■□□□□□□□□□
    Oops I hit enter too quick. Just joined today, so to continue:

    Maybe you haven't held a paid full time programming job or you haven't ever had the job title. But IMHO if you script you program. You say you have a solid understanding of the fundamentals. Now you can show it - make your own github. As you go through everything else you're learning, make code ("scripts", "programs", etc) that mirror in some way the topics you learn. Build your portfolio at the same time as you learn.

    Might be stuff you already heard but I figure I'll try to make a meaningful 1st post.
Sign In or Register to comment.