Configuring a cluster manually can be very time consuming. Every host needs to be aware of other hosts, and SSH keys must be distributed to allow access. Chameleon implements OpenStack's Heat Orchestration to solve this problem. With "one-click" you could deploy a cluster with user defined networking. Some use cases are:
- A server node and several client node
- An MPI cluster across Infiniband nodes
- Several hosts on different subnets with routing between them
Complex Appliance Examples
We call these clusters Complex Appliances. Where a "simple" appliance would be a single bare-metal node, a Complex Appliance may feature several nodes. You can view some examples of pre-written complex appliances on the Chameleon Cloud portal's Appliance Catalog. Complex appliances are marked with the cluster badge in the upper right corner:
Let's check out the NFS Share complex appliance. When launched, this appliance will feature:
- A server with an NFS export
- A user specified number of clients
- Automatic configuration of clients that mount the server's NFS export
- SSH keys configured on all hosts
Most of the work is actually done using a Heat Orchestration Template - a YAML file that specifies which components to use to launch the entire complex appliance. If you click on the Get Template link from the appliance description, you can see the contents of the template.
How do we get this template into Chameleon? You have several options. You could download it to your local computer and upload it to the dashboard, or simply copy and paste the contents directly into the dashboard. These options are good if you need to modify an existing template. Alternatively, you can speciy a URL in the dashboard and let Chameleon find it on the Internet. This is what we're going to go with since we are working with a template that has been posted on Chameleon's Appliance Catalog.
Launching on the Dashboard
Let's go ahead and log in to the dashboard to launch this template. First, you will need a reservation for at least two nodes - one for the server and one for each client. Assuming that you have made this reservation, we can next go to the Stacks tab by clicking Project > Orchestration > Stacks.
You can now start the launching process simply by clicking the Launch Stack button. "Stack" is OpenStack's terminology for a multi-node Complex Appliance. The first dialog that you are presented with allows you to specify the template you are using. Remember that we are going to be using the direct URL to the template.
Once you click "Next" the template will be read, verified for syntax correctness, and then you are presented with the parameters for launching this particular stack. First, you will need to specify a stack name and enter in your Chameleon password. The interesting thing about Heat templates is that the next few dialog options are parameters that are specified by the template. At a base minimum, Chameleon templates will require an SSH key parameter as well as a reservation parameter for scheduling and launching an accessible stack. You will notice that this particular template also includes a Client Count input parameter, used to generate any number of clients to connect to the NFS server. When you are writing your own templates, specifying input parameters allows you to make your Complex Appliance deeply reconfigurable by the user at launch time!
When launching a Simple Appliance (such as a single bare-metal node from an image) you typically need to specify a floating IP. With Orchestration, the floating IP association process can be automated. This particular template ties a floating IP to the server and lists it as an "output." You can view all of the template's outputs by clicking on your Complex Appliance and clicking on the "Overview" tab.
Chameleon supports a large number of features that can be orchestrated. An easy modification you can make to existing templates is to change the image name used to launch individual nodes. The template used in this example uses the CC-CentOS7 image. You can also modify the startup scripts for each instance from within the template. However, this template only begins to touch on some of the options available from within Chameleon. Chameleon's capabilities also include orchestrating OpenStack's Neutron networking resources, including subnets with custom routing. You can view these resource types by clicking on Project > Orchestration > Resource Types.