As part of the support updates to Solaris 11.2, we recently added the Heat orchestration engine to our OpenStack distribution. If you aren't familiar with Heat, I highly recommend getting to know it, as you'll find it invaluable in deploying complex application topologies within an OpenStack cloud. I've updated the script tarball from my recent series on building the Solaris engineering cloud to include configuration of Heat, so if you download that and update your cloud controller to the latest SRU, you can run havana_setup.py heat to turn it on.
OK, once you've done that, what can you do with Heat? Well, I've added a script and a Heat template that it uses to the tarball to give you at least one idea. The script, create_image, is similar to a script that we run to create custom Unified Archive images internally for the Solaris cloud. The basic idea is to deploy an OpenStack instance using the standard archive that release engineering constructs for the product build, add some things we need to it, then save an image of that for the users of the cloud to use as a base deployment image. I'd originally written a script to do this using the nova CLI, but using a Heat template simplified it. The simple.hot file in the tarball is the template that it uses; that template is a simpler version of a two-node template from the heat-templates repository. It's fairly self-explanatory so I'm not going to walk through it here.
As for create_image itself, the standard Solaris archive contains the packages in the solaris-minimal-server group, a pretty small package set that really isn't too useful for anything itself, but makes a nice base to build images that include the specific things you need. In our case, I've defined a group package that pulls in a bunch of things we typically use in Solaris development work: ssh client, LDAP, NTP, Kerberos, NFS client and automounter, the man command, and less. Here's what the main part of the package manifest looks like:
depend fmri=/network/ssh type=group
depend fmri=group/system/solaris-minimal-server type=group
depend fmri=ldapcert type=group
depend fmri=naming/ldap type=group
depend fmri=security/nss-utilities type=group
depend fmri=service/network/ntp type=group
depend fmri=service/security/kerberos-5 type=group
depend fmri=system/file-system/autofs type=group
depend fmri=system/file-system/nfs type=group
depend fmri=system/network/nis type=group
depend fmri=text/doctools type=group
depend fmri=text/less type=group
In our case we bundle the package in a package archive file that we copy into the image using scp and then install the group package. Doing this saves our developers a few minutes in getting what they need deployed, and that's one easy way we can show them value in using the cloud rather than our older lab infrastructure. It's certainly possible to do much more interesting customizations than this, so experiment and share your ideas, we're looking to make Heat much more useful on Solaris OpenStack as we move ahead. You can also talk to us at the OpenStack summit in Paris next week, a number of us will be manning the booth at various times when we're not in sessions at the design summit or the conference itself.
Oh, and for those who are interested, the Solaris development cloud is now up past 100 users and has 5 compute nodes deployed. Still not large by any measure, but it's growing quickly and we're learning more about running OpenStack every day.