Santos, a major Australian energy producer, came to Spoon needing a way to allow their employees to continue using a critical Oracle Hyperion business system across a company-wide desktop operating system upgrade. They implemented a Spoon solution for over 2,0000 desktops based on Spoon containerization. Santos Senior Desktop Systems Engineer Andrew McAlpine describes the outcome:
Our Oracle Hyperion went in Monday night, after a lot of work was done to migrate the back end. Has been a resounding success!
We’ve also implemented a Spoon’d version of a complex suite of engineering related software, one that has a .NET 4.5 incompatibility. Adding .NET 4.0 to the container was a breeze and our deployment has become a much easier proposition.
We’re now working on Access 2010 and Excel, which will allow us to move forward with updates to our SOE while maintaining some critical business functions that can’t move with for the time being.
Rabbit out of a hat, your product has been a revelation for us.
In addition, Spoon Studio has been updated to patch version 12.0.340.16 to fix regressions in the previous patch update.
Spoon Server users on an active maintenance contract can access the latest Spoon Server by logging into their Spoon.net account.
This update is strongly recommended for existing users as it incorporates numerous virtual machine compatibility fixes. For customers that need to renew maintenance, please contact the Spoon Sales Team for a renewal quote.
That’s it! The grid is ready and we can launch our tests pointing to the URL http://localhost:4444.
Note that the command-line interface also makes it very easy to script node and grid launches, for example as part of an automated build system.
If you’d rather not use the command line interface, there’s also a complete web interface available at http://spoon.net/selenium.
The Spoon Selenium interface offers a simple one-click launch of an entire Selenium Grid:
The web interface also allows you and your teammates to view and share logs of test executions, including Selenium commands and screenshots of the executing tests:
Thanks for reading and hope you enjoy the new containerized Selenium Grid on Spoon.net!
A cross section of the Spoon engineering team is in Florida at our annual winter Hackathon. Spoon Hackathons bring together our distributed team for one-two weeks of concentrated coding, bonding, and escape from winter climates.
Microsoft’s Jon Galloway meets Kenji in San Diego to talk about Spoon, an application containerization and streaming platform for Windows. They discuss different virtual machine approaches, Spoon’s features, the container movement, and flying airplanes.
Azure RemoteApp is a new cloud service from Microsoft that allows RDP-based access to individual Windows desktop applications running in the Azure cloud. In this walkthrough, we’ll explain how to use Spoon containers with RemoteApp to allow individual desktop applications to be deployed and managed on Azure.
Azure RemoteApp supports deployment of custom applications and environments via uploading of VHD (virtual hard drive) images. These images contain both the base operating system and all installed user applications. While this allows complete customization of the OS environment, it requires creation and management of a complete server OS image (called a “RemoteApp Template Image”) for each set of applications, application versions, and configuration variants. When an individual application is updated, the entire OS image must be updated.
With containers, individual applications can be deployed to a single base Azure image. New applications can be deployed to the Azure cloud instantly without changing the base Azure image. When an application is updated, only the container for that specific application needs to be updated. And a single base Azure image can support many different sets of applications, user entitlements, and even multiple configurations of the same application.
Combining Spoon containerization with Azure RemoteApp dramatically increases the power and flexibility of RemoteApp for end users by allowing instant access to applications. Spoon containers also simplify administration by requiring management of just a single RemoteApp Template that can then host any set of individual application containers.
Your Azure Subscription Name, Subscription ID and Management Certificate Thumbprint which can be found under Settings in the Azure Management Portal
If you are new to Azure and you do not have a thumbprint, follow these instructions under the “Use Certificate Method” to generate your Thumbprint.
Create or identify the Azure Storage account that you will be using to store your VM templates. When creating a Storage account be sure to select the right location so that it will match your RemoteApp deployment.
Add the Azure RemoteApp Services module
First you need to add the RemoteApp PowerShell modules to your environment. Download the Azure RemoteApp Services zip. Next go to the properties of the file and select Unblock. This is important otherwise when you extract the DLLs, they will be blocked and any scripts that attempt to load the DLLs will fail.
Unzip the files into a local directory like C:\RemoteApp. Close any PowerShell windows that are open. Run Azure PowerShell as Administrator, go to the directory where the files were unzipped and install the new module.
Keep PowerShell open and move on to the next step.
Connect to your Azure RemoteApp account
There is a Publisher Settings file that you need to import in order for the PowerShell environment to be connected to your Azure account. Use the Get-AzurePublishSettingsFile to download the file and the Import-AzurePublishSettingsFile to import it into your environment.
Create a PowerShell script file, C:\RemoteApp\RemoteAppSetup.ps1, with the following content.
Set-AzureRemoteAppSubscriptionId <Azure Subscription ID>
Set-AzureRemoteAppCertificateThumbprint <Thumbprint of the Management Certificate>
Set-AzureRemoteAppServiceUrl -Url https://management.core.windows.net
Run the following command in PowerShell:
Keep PowerShell open and move on to the next step.
Setting up the RemoteApp Template
The RemoteApp template that will be used for the RemoteApp service is based on a virtual machine image. To create the virtual machine image, we will first instantiate a new virtual machine instance.
Create the Virtual Machine Image
The RemoteApp team has provided a starting point for this VM instance that has the RDSH role and other Azure RemoteApp services already configured. Here is the command to use to create this VM.
New-AzureQuickVM -Windows -ImageName "ad072bd3082149369c449ba5832401ae__Windows-Server-Remote-Desktop-Session-Host-on-Windows-Server-2012-R2-20140920-1926" -ServiceName <NewServiceName> -Name <NewVmName> -AdminUsername <adminusername> -Password <pswd> -Location <location of the Service> -MediaLocation <URL of the OS VHD Blob which will be created in your storage account>
Once the sysprep command completes, the VM will shutdown.
Create the Virtual Machine Image
Back in the Azure Management Portal, select the virtual machine instance and click on the Capture link at the bottom of the page.
This will create a new virtual machine Image. Be sure to note down the name of the new image that you created.
Create a default RemoteApp Service
Before converting the VM image into a RemoteApp template, I had to create a RemoteApp service using an available Microsoft Template. I’m not sure if this is a bug, but the following step would not succeed until I created a RemoteApp service. Again, be sure to select the right Region. In this example, I chose the Basic plan with just Windows Server 2012 R2 as the template image. Provisioning may take up to 30 minutes, but you do not have to wait for it to complete before moving on to the next step.
Convert the Virtual Machine Image into a new RemoteApp Template Image
The Azure RemoteApp team has provided a PowerShell script, Import-AzureRemoteAppTemplateImage, that will import the VM image we create earlier into our RemoteApp template images. Download that text file and save it to C:\RemoteApp\Import-AzureRemoteTemplateImage.ps1. Note the file extension.
When this process completes, the template image will be available in the list of RemoteApp templates in the Azure Management Portal.
Configure the RemoteApp Service
Create a new RemoteApp Service
Now that the customer RemoteApp template is complete, it is listed in the available templates when creating a new RemoteApp service. Use that template to create a new service.
Publish the Spoon Console Application to the RemoteApp Collection
Once the service is created, it’s time to publish the applications for the user. In this case, we will use the Publish programs using path option.
Enter the name, Spoon Console, and the path to the command prompt. The Spoon Console is available on the system path.
After the process completes, you will see the console as a published app.
Test the Spoon Console using the RemoteApp client
Provide users access to the RemoteApp Collection
Under the User Access section you can add users that can access the applications.
Testing the RemoteApps
If you don’t have the RemoteApp client, download the appropriate client for your device and install it. When you run the RemoteApp client and login, you should see the application that are available to you. In the Windows client you should see something like this.
Double click on the Spoon Console icon to run the application. This will launch a command window that is running on the Azure Cloud environment.
Run applications from the Spoon Console
Normally the applications that the user can run is limited what was originally installed on the virtual machine we configured earlier, but with the Spoon Console, we can run any application that is available on the Spoon.net Hub.
> spoon login <username>
> spoon run sublime-text
Some other applications you might want to try:
> # Surf the web with Opera
> spoon run opera
> # Do some coding in Python
> spoon run python
> # Edit some text files with Atom
> spoon run atom
Thanks for reading, and I hope this makes helps your Azure RemoteApps deployment!
The Go team just released version 1.4, the fifth major release of Google’s open source programming language. Spoon has updated the official hub image with version 1.4 and I decided to give it a test drive. (Click here for more details about golang 1.4.)
Since I just wanted to test out the new Go and wasn’t intending to work on a real project, this was a great opportunity to use the spoon try command. try behaves exactly like run except a temporary container is created. The container is destroyed as soon as the last process exits.
To create a temporary container and launch Go, type spoon try go in the command prompt:
This command will start a new command prompt running in the container with the latest go and clean image available. The clean root image has Go run in a virtual clean operating system. Just like the installed version of Go, the Spoon image adds the Go install directory to the PATH environment variable in the container, so you can run the go command from any directory.
Below you can see we included an ultra-simple ‘Hello, World’ application written in Go in the image, and that the complete arsenal of Go commands is available:
We can exit the container at any time by typing exit. Doing so will automatically remove the temporary container and all content from our test drive will go away, which is very convenient if you’re just experimenting with new languages or environments.
If you’re new to Go (or Go on Spoon) and looking to get started developing in Go, you might want to include a text editor image in your container. We’ll use one of my favorite editors, Sublime Text:
Once you’re in the container, launch Sublime:
Sublime Text will launch. I’ve copied in an interesting example from the Go homepage that does arithmetic via Peano’s axioms (“Peano Playing”!). There are many other cool examples available on the Go homepage and the Go Tour.
Save the file as C:\peano.go. Then exit Sublime and run your program from the command prompt (which is still running in the container):
For more information on Spoon’s support for Go, different versions of the Go image, and some more examples, visit the Go repository on the Spoon Hub. If you’re not a Gopher, we also have many of other programming language images on the Hub that you should love.