Testing Script Runtime Service for vSphere – part 2
In the first part of this blog, I installed the Script Runtime Service and checked if it was installed correctly.
In this second part, I will give you a walkthrough of how to run a simple script.
In order to successfully run a script, you must have some understanding of how the service works. Every user has his own runspace. This runspace is a PowerShell instance running in a dedicated container as a Kubernetes pod on the Kubernetes cluster.
To run a script you request Script Execution. Script Execution is an SRS resource that represents a script that you request to run in a runspace. The whole process looks like this:
- create runspace
- run script
- retrieve output
- remove runspace
SRS uses vCenter Server SSO so any vSphere user that can authenticate in vCenter Server SSO can access the SRS feature. When the authentication is successful the service returns an X-SRS-API-KEY token in the response headers. This token must be used for subsequent API calls. Just add the token to the headers.
When you create a runspace, you can request to create a PowerCLI connection to all linked vCenter Servers. To request a PowerCLI connection specify run_vc_connection_script on the create runspace API call. The status and id of the created runspace can be found in the content property of the returned object. Because a runspace is not immediately available you have to check the status before you continue with the next step.
Now that you have created a runspace, you can use that runspace to run your script. The only thing you need is the ID of the runspace and a name for your script (or code). Because the calls are asynchronous you have to check the status of the script periodically.
When your script is finished you have to get the output of the script. Output is referenced by the ID of the script.
Besides script output, there are also five streams that are collected for script execution: Information, Error, Warning, Debug, and Verbose. Streams give information that the script has been produced during the execution.
When you are done with the runspace you can delete it. The only thing you need is the ID of the runspace.
And finally, when you are all done, you can terminate your session by logging out.
When you code these steps in PowerShell it looks like this:
Once again I refer to @LucD’s blog if you want to see more advanced code on how to run your PowerShell code on SRS.