At the last Wisconsin VMware User Group meeting, there was a spirited, yet friendly, discussion between one of the leaders and a VMware SE whether people should use vCenter Orchestrator or PowerCLI. The discussion focused on which was better to learn and use for managing and automating vSphere environments.
That conversation got me thinking about what the “right tool” is and how to select it.
So what is the right tool? Is it Orchestrator? PowerCLI? Or something else?
As with anything else in IT, the answer is “It Depends.” The automation engineer’s toolbox has grown significantly over the years, and before you can really answer that question, you need to understand what tasks you’re trying to accomplish and the capabilities of the different tools.
Not all automation tools are intended to be used the same way, and using one does not preclude using another to supplement it. vCenter Orchestrator, for instance, is a workflow automation tool with a number of canned workflows for handling routine tasks in vSphere, and it is the underlying automation engine for the vCloud vRealize Automation Center. But it also includes plugins for interfacing with and/or managing other systems – including PowerShell scripts on other hosts. It is great for tasks that may be run multiple times, either on-demand or scheduled, but it may not be the right fit for quickly automating a one-off task.
PowerCLI, on the other hand, is based on PowerShell. It is a great command line shell with powerful scripting capabilities. Like Orchestrator, it is extensible, and Microsoft and other vendors have released their own PowerShell modules. This allows an administrator to automate a large number of 3rd-party systems from a single shell. But while it has some workflow capabilities and even a configuration management tool in Desired State Configuration, it isn’t necessarily the best tool for large scale orchestration or providing the front or middle tiers for large scale batch processing, enterprise self-service, or orchestration.
These are just two examples of the tools that you can pick from when automating your environment. In the last couple of years, VMware has significantly expanded the number of scripting languages that they support by releasing additional SDKs for a variety of programming and scripting languages.
I should point out that neither of the two camps in this conversation were wrong. An admin should ideally know of multiple tools and when to use them to maximum effect to solve a problem.
How I Use PowerCLI and vCenter Orchestrator
My answer to the question of “PowerCLI or vCenter Orchestrator” is best summed up by this classic meme:
A lot of the automation that I’ve done at $Work has used both PowerShell, including PowerCLI, and vCenter Orchestrator working together to accomplish the tasks.
I use PowerShell to do almost all of the heavy lifting against a variety of systems including Active Directory, Exchange, vCenter, and even Microsoft Online Services. The scripts are usually less than 200 lines, and my goal was to follow something similar to the Unix Design Philosophy where each script specializes in one specific task. This, in my opinion, makes it easier to modify, add new features, or reuse code in other jobs.
I use vCenter Orchestrator for three things. The first is to tie together the various scripts into workflows. The second is to act as a job scheduling agent since I don’t have something like UC4 or Tidal in my environment. The third is to enable me to offload tasks to developers or the help desk without having to give them any additional rights on other systems.
By utilizing the strengths of both Orchestrator and PowerShell, I’m able to accomplish more than just relying on one over the other.