In my last article, I started a discussion about automation and the tools of the trade for automation and orchestration. The post focused on Microsoft PowerShell as one side of the automation coin—one of the primary tools of the trade when working within Microsoft, VMware, and Citrix virtualization and orchestration solutions. Why PowerShell? Quite simply, it’s a powerful platform that has a robust community supporting it, and companies outside of Microsoft have invested a great deal of time and development to integrate PowerShell into their main administration and management platforms for working with VMware vSphere and Citrix Xen. So, if PowerShell is one side of the automation tools coin, what’s on the flip side?
In my opinion, the flip side is Python, hands down. Not only has Python been a very popular programming language for a very long time, but it is a language that is used on many different operating systems. Some people, when they think of Python, think primarily of scripting inside the Linux operating system. However, Python has a strong presence in the Microsoft world as well. As a matter of fact, one of the least well-known and most powerful free products available from Microsoft is Python Tools for Visual Studio, as well as variations like IronPython, which is Python running under .NET CLR; Django apps; and regular CPython for making new projects from existing code. Python Tools for Visual Studio also has the capability to do mixed-language Python and C++ debugging. For many programmers, the mixed-mode debugging is something that can’t be overstressed. Since we are considering Python as the focus for automation, let me mention some of the orchestration solutions that are based off of the Python programming language.
At the top of my list to mention is Ansible. Ansible is a free software platform for configuring and managing computer systems. It combines multi-node software deployment, ad hoc task execution, and configuration management. As mentioned, Ansible manages Linux nodes via Python over SSH, but it will also manage Windows nodes using—wait for it—Microsoft PowerShell over SSH or over JSON and standard output. Ansible can use any language that takes advantage of JSON and YAML to express reusable descriptions of systems. Ansible is included as part of the Fedora distribution of Linux, which is owned and developed by Red Hat and is available as part of Red Hat Enterprise Linux, CentOS, and Scientific Linux via Extra Packages for Enterprise Linux, as well as others. Red Hat has become so committed to Ansible that in October of 2015, Red Hat Inc. announced that it had signed an agreement to acquire Ansible Inc.
An increasingly popular open-source solution for deploying instances in an Infrastructure as a Service (IaaS) is OpenStack. Automation can be written to the OpenStack Representational State Transfer (REST) application programming interface (API), but there are also Python APIs that are being reported as being much simpler to use. OpenStack is not a single application, but rather a series of services that make up the platform, with those services being:
- Identity Service: Code name keystone
- Image Service: Code name glance
- Compute Service: Code name nova
- Networking Service: Code name quantum
- Block Storage Service: Code name cinder
- Object Storage Service: Code name swift
What I hope you’ll take away from these tools of the trade posts is that the two main automation programming languages for orchestration and automation solutions on the market today are PowerShell and Python. They appear to be the most prevalent programming languages available to work with most of the automation and orchestration available in the marketplace. If you are looking to bring more automation into your environment and are not quite sure where the best place to start is, gain some proficiency with PowerShell and Python. I believe that these skills will bring you the most return on the time and effort you put into becoming proficient. As an aside, it would be worth adding JavaScript. If you’re proficient in PowerShell and Python, then JavaScript is a piece of cake to master. Once you have the fundamentals mastered, all you really need to check is the syntax of the language itself. Happy coding with your tools of the trade.