The command line is out. The graphical user interface is gone. Tomorrow's infrastructure will be abstracted as...
code and today's virtualization administrator should start preparing.
The guiding principle of DevOps and continuous release is that everyone writes code. Familiarity with shell scripting is no longer sufficient; a truly accomplished virtualization administrator needs to know Python, and preferably another language, too. In a world driven by cookbooks and application programming interfaces (APIs), a thorough knowledge of programming languages is a requirement of the job.
This news might come as quite a shock for a virtualization administrator who has worked for 15 years without having to know any programming languages. If you find yourself in this position, you'll need to start learning to code as soon as possible. This will require a significant amount of time and dedication, but it's better than being cast into the garbage can with yesterday's technology. Learning to program can be difficult if you've never done it before, but is ultimately a good mental exercise and worth the effort.
The death of the command-line system admin
In my years as a programmer, administrator and manager, I've encountered many types of personalities and learned firsthand that not everyone has the temperament or desire to write code. I've worked with people who were resistant to writing code in Python and Perl because they did not understand programming and had no interest in learning it. In my experience, there are two kinds of people: those who avoid change and those who embrace it. This sentiment is especially true of those faced with the choice of whether or not to learn coding.
Plenty of people have made a career out of learning one thing and doing nothing but that. Every organization needs employees like this to keep the lights on and engines running, but they also need curious and aggressive employees who readily embrace and master the latest technology. This second type of individual lifts up the whole team because, given proper support from management, they can persuade others to follow them, and even act as mentors. Ambitious individuals with their finger on the pulse of IT tend to be more productive than anyone else.
If you have someone like this on your virtualization team, there's a good chance they're already writing code. Now you just need the rest of your team to get up to speed.
Automating the build
Programmers working in a continuous delivery DevOps organization can enter code into Git to automate unit and functional tests. Ansible and Docker cookbooks and Python code can define networks, install VMs and software, and retrieve the programmer's code from the Git code repository.
Ansible OpenStack API
Ansible is based on the same idea as Docker: you write code in Linux containers, which are like miniature Linux VMs. These are then shipped out to a target system, where they execute instructions that have been coded and tested elsewhere. These Linux containers perform a numbers of useful tasks, such as installing Apache Kafka, defining storage and laying down other software.
You can also use Ansible to install OpenStack or other VMs. There is an Ansible OpenStack API. At the time of this writing, it is still in development, but it may be ready by the time you read this article.
Ansible calls its tool an automation language, which clearly distinguishes it from a push button graphical user interface or a Bash script run from a Cron table file. The Ansible tool is more powerful than these alternatives because it is a collective sum of ideas and logic written by other people who contribute to Ansible.
If you want to keep up with the pace of DevOps, you need to add APIs to your arsenal of tools and knowledge. This, however, is usually easier said than done. Even installing OpenStack from the command line is complicated. Fortunately, if you're able to master the complexity of an OpenStack installation, you can code it for future use so that you don't have to manually work through all the details.
This kind of coding facilitates resilient and continuous development methods, such as the blue-green and canary approaches to releasing code changes. Blue-green, a deployment method that involves maintaining and switching between two duplicate application stacks running on separate systems, can help facilitate new releases, while keeping a backup copy available in case of problems. The whole idea of the machine is an abstraction, and it makes building out testing and development easier and faster.
How does DevOps really work?
Find the right DevOps tool for polyglot programming
Ansible gets serious about scalability