Automating Container Deployment and Stress Testing with CoreOS
SIS is working on a significant project to design and deploy a Cloud Management Platform (CMP). As part of this effort, we were tasked with the development of a self-service portal for our customers to easily deploy new workloads, manage current workloads, and configure connectivity to their Virtual Datacenters (VDCs). With that in mind
, we wanted to develop a stress testing processes against our hardware and software to test its capabilities as well as to verify hardware stability with a real burn-in process.
To meet the requirements of automating this stress testing procedure, we decided to use containers which were the perfect fit due to their agility and ability to be quickly deployed, and removed. The question we asked ourselves was, what’s the best method to automate deployment of containers? Enter CoreOS…an open source project for Linux Containers. CoreOS is super-lightweight coming in at only 267 MB and has Docker container support built-in.
With CoreOS as our chosen OS, we needed to develop an automated deployment process. A quick Google search brought us to a blog post by Robert Labrie. In his post, he provided a PowerShell script to accomplish the task. With that and the CoreOS documentation on how to run CoreOS in a VMware environment, we had what we needed to start.
We took Robert’s script and modified it heavily adding features such as deploying to vSphere Clusters, Datastore Clusters, and better error-checking. Our automation script can be found here. Here are the basic steps required to use the script.
- Download the script and cloud-config files to your computer to C:\CoreOS
- Open a PowerShell windows and execute the code below:
- Run the script!
Find examples of how to use the script:
Get-Help New-CoreOSCluster –Examples
- Once the CoreOS VM(s) are deployed, you can access them via SSH using the following credentials specified in the cloud-config.yml:
From a high-level view, this script is using the cloud-config.yml configuration file to provide CoreOS with its running parameters and the VM’s VMX file to configure to apply the network configuration. We highly encourage reading the CoreOS documentation on this configuration file as this is what you will be working with when making changes to your CoreOS.
As an extra bonus, we’ve also included in the cloud-config.yml how to configure CoreOS to run a Docker image on boot. This code can be easily modified to run whatever Docker image your needs dictate.
We hope everyone enjoys playing with CoreOS and using it in your environments as we have!
Link to GitHub for script:
Links in the article that I used for research when developing this script: