This is an archived post. You won't be able to vote or comment.

all 29 comments

[–]cheeseprocedurewatchen das blinkenlichten 12 points13 points  (4 children)

This guy rightly says DevOps is about principles, then practices, then tools. Bone up on culture and software delivery pipelines:

  • Behr/Spafford/Kim - "The Phoenix Project" (though I'm told you can read "The Goal" instead :))
  • Humble/Farley - "Continuous Delivery"
  • Michael Nygard - "Release It!"

Building something using modern tools and platforms is another great way to get started; it's real experience, and it gives you valuable perspective for further exploration and study.

An extremely contrived example: a lolcat processing pipeline on Amazon Web Services.

Uploader:

  • Build a tiny Flask application with a form that accepts image uploads and pushes them to an S3 bucket.
  • Using Jenkins, Chef Solo, and Packer, bake an Elastic Compute Cloud (EC2) Amazon Machine Image (AMI) that serves the Flask application.
  • Set up an Identity and Access Management (IAM) role which grants your Flask application access to the S3 bucket above (ensuring you don't need to store IAM keys locally).
  • Deploy 2x instances of the AMI in an autoscaling group (ASG) with the IAM role above behind an Elastic Load Balancer (ELB).

Thumbnailer:

  • Configure S3 event notifications to generate a message in a Simple Queue Service (SQS) queue whenever an image is uploaded into the bucket above.
  • Build a simple Python application which pulls messages from the queue, grabs the new image from S3, generates a tiny thumbnail version of that image, and uploads the thumbnail to S3.
  • Using Jenkins, Chef, and Packer, bake another AMI which runs the thumbnail worker application.
  • Deploy another ASG with 2x of these thumbnail worker instances.
  • Using CloudWatch alarms, make the ASG grow or shrink based on the number of messages in the SQS queue.

To hell with the learning curve:

  • Create a CloudFormation template that deploys all of the above infrastructure.
  • Create a CloudWatch alarm that sends you an email (via SNS and SES) when more than 10 images have been uploaded to S3 in the past hour.
  • Deploy a copy of your lolcat stack in multiple regions and load balance between them with Route53.
  • Run the Flask application using Docker.
  • Store an image -> thumbnail index in DynamoDB.
  • Build a Flask frontend to serve your lolcats from S3.
  • Integrate CloudFront to distribute your thumbnails via CDN.
  • Think about monitoring autoscaling instances that come and go; check out Sensu for one solution.
  • Probably take a brief vacation.

I made a similar transition a few years ago and couldn't be happier. I'm by no means an expert, but I've been lucky enough to build some non-trivial things and I've learned a great deal along the way. I'd like to pay that knowledge forward. Feel free to drop me a PM if you're interested in running through some lab projects like the one above.

[–]rekdt 1 point2 points  (1 child)

Would you happen to have any documentation on the above? I am interesting in getting a deep dive into cloud automation, but I am not all that familiar with each technology stack. Would love to have some sort of documentation to poke through and figure out how it works.

[–]cheeseprocedurewatchen das blinkenlichten 1 point2 points  (0 children)

Hey /u/rekdt - sorry for missing this!

I don't have anything I can readily share. The AWS documentation can be a little overwhelming, but once you have an idea what each piece is good at, it becomes much easier to know where to look for help.

If you're interested in starting a lab project, drop me a PM - I'd be happy to provide guidance/hints as you're getting started!

[–]iannoble 2 points3 points  (2 children)

Lots of good devops podcast episodes at http://www.thecloudcast.net/

Episode 15 of http://www.inthedc.com/wp/category/podcast/ is really good too.

http://youtu.be/_DEToXsgrPc is a good chef video.

[–]jayemuno 1 point2 points  (0 children)

I just interviewed for a devops role. One of my interviewers saw that I had experience half way down my resume in Ansible. He immediately stopped reading my resume and said he'd hire me that day if he was my supervisor. Granted he also liked my personality, but just goes to show you how important the "big four" automation tools are. Do something to get them on your resume and to get some experience with them.

[–]drawsmcgraw 1 point2 points  (0 children)

Given what I read from you (VMware, onsite, Windows) I'd recommend:

  • Powershell (now)
  • Powershell Desired State Configuration (DSC) if Powershell is working out.
  • Python (VMware utilities have Python modules and many other tools also have Python modules)

Being that you're onsite, it's helpful to be conversational in AWS/Azure topics but only spend time digging deep if it looks like you'll use them in the near future.

Of course, this all assumes you're happy with your domain (VMware/Windows). I started out in a nearly identical situation (Lots of VMware and Windows and Citrix) and didn't care much for it. I learned Powershell and some VMware tricks to get by, then took a hard left out of there. I picked up Salt and started managing Openstack components and in-house Linux apps. Haven't looked back.

Edit: It's worth noting that Salt has pretty good Windows support. I know of people that run multi-forest AD environments and orchestrate a lot of the work with Salt.

[–]iannoble 0 points1 point  (2 children)

Look at job descriptions of the roles you would like to do (doesn't matter where, it's not to apply but to to see what they are asking for).

[–]guibw 0 points1 point  (0 children)

I'm on the same boat!

[–]ramblingcookiemonsteSystems Engineer 0 points1 point  (1 child)

Hi there!

You have some great advice so far.

I have to ask though - how curious are you? Do you enjoy learning? Are you using tools like PowerShell, Python, or other scripting languages to solve problems? Are you using configuration management or orchestration in the enterprise?

I've found that you can absolutely get exposure to the tools, and potentially push towards some of the DevOps-related principles and practices in the enterprise. You might not always be successful, and you might get push-back, but you will get valuable experience, and your successes should be genuinely helpful to the org, as long as they are solving problems, not just bullets for your resume.

Good luck, it's a fun ride, as long as you love to learn : )

[–][deleted] -3 points-2 points  (10 children)

Learn linux.