I’ve recently got the chance to begin working with System Center Orchestrator 2012 R2, which is looking like it is going to be awesome for really getting our environment to the automated level. That is, if I ever figure out how to use the thing.
I have been looking through the book System Center 2012 Orchestrator Unleashed on Safari Books which has given me a decent basic introduction to functionality and features, but there’s a lot that can be done with this product, especially when you start adding Integration Packs to interface with other System Center products and anything else in your environment with a provided IP.
Right now, I am trying to automate the VM creation process through Orchestrator. The goal is to make the creation of one or many VMs a single-click operation from a webpage. This has been much more of a challenge than I anticipated.
When you aren’t using PowerShell or a scripting editor such as PowerCLI, it is hard to keep track of all the operations that need to happen before the next step can take place. For example, the next step in your procedure might require a VM ID instead of a VM Name, which might not be published data from the activity that just finished. So you get lost trying to figure out why the operation just failed, when you are passing information the next step can’t use.
I’ve taken to saving the VM specifications in a database and using Orchestrator to query the information. Sadly, Orchestrator cannot return information from a database query except as a semicolon-delimited string, which means you need a script to parse that output and then build arrays for your activities.
Looping is another complaint I have. It doesn’t seem as flexible as what is available in PowerShell. I was attempting to allow a runbook to create multiple hard disks, but it took a long time for me to figure out how to get the loop to pick out a different bus for each disk. Actually, that one was kind of embarrassing because you can count the number of times a loop has executed, but it’s not obvious.
Maybe I should just be chalking all this up to the learning phase, but it seems like there is a real lack of documentation for Orchestrator itself. Don’t get me wrong though, I think it is going to be a great thing once we get some runbooks built and working the way we want.
I hope to have some runbooks that I’ll be able to post to GitHub once I get something of use done, so maybe someone can learn from my mistakes.