BLOG

Automation, Clouds, and Continuous Delivery: Learning What to Learn

Robert Haynes Thumbnail
Robert Haynes
Published October 24, 2017

In the all-you-can-eat buffet of cloud and automation skills, how do you decide what to learn? In previous articles we have discussed the operational changes that private clouds bring, and the new kind of work that an operations team will be doing in the cloud age.

For most of us, this is going to mean learning some new general concepts, and some specific technical skills. If you are lucky (or unlucky, depending on the details), then the suite of automation and orchestration tools for your environments are established, either by diktat or by common adoption. In that case it’s usually just a matter of finding the way you like to learn, getting some kind of lab or test environment (and this often where the public cloud providers and their ‘first-hit-is-free’ credits come in), and getting down to it.

But what if you are starting from scratch, either building you automation toolset or just learning because you can see it coming in the not-too-distant future? It’s great to have choices, but in the automation space there sure is a lot to choose from. Breaking it down into broad areas is one way to focus in on what you should learn.

Source code version control systems. Getting a handle on version control systems is important because A) as you build the scripts and tools you need to be that button creator, you are going to need somewhere to keep them – and manage the version control B) It’s what your peers in the development teams or DevOps groups will be using. The most obvious place to start here is with Git/Github – although of course there are plenty of other systems available – some of which might even suit your organization better. But Git is pervasive and a portable skillset.

Continuous Integration/Continuous Delivery (CI/CD) tools. In many cases, changes and deployments are going to be managed by a tool like Jenkins, which is a good example of an CI/CD application. Jenkins creates deployment pipelines where application code can be compiled, tested and deployed in an ordered and automated workflow. Most CI/CD applications are extensible through the use of plugins that can be used to manage a variety of activities, including deploying new server instances or configuring infrastructure components.

Tools that a CI/CD workflow might leverage that we are interested in are primarily for automating infrastructure, and there is a pretty wide choice of tools, all with strengths and weaknesses. Since F5 are good partners with many of the providers, I’m not going to recommend a particular one, but there are a plenty of great articles out there detailing the differences. My advice is to start with the one that, having read about it just a little, you think looks the easiest. That might sound like highly subjective and unspecific advice, but everyone’s brain is different, and in the absence of strong reasons otherwise, it’s worth finding a utility you can get up to speed with quickly. Tools such as Ansible, Puppet, Chef, Salt, or Terraform are all well documented and have a significant user following. 

Finally – or firstly if you choose to believe the last paragraph of this blog, you probably want to ground yourself in a basic scripting language. The hands-down winner for network automation is Python as it has SDKs from many of the key vendors or software projects available, including F5.

So there you go – a quick run-down of some key automation technologies you might want to spend a bit of time learning. Well more than a bit, I’d say there are a few months of study ahead, assuming you have a day job.  Finally – my advice is to start with the last on the list – Python and work ‘upstream’ from there. If you understand how tools talk to your components programmatically, you will have a much better time working out the intricacies as you move up the stack, and probably have a much greater appreciation for the joys of source control when you get there.