If you've used Stackato you're probably familiar with the Stackato App Store, a handy repository of sample applications and app templates that can be installed into the Platform-as-a-Service (PaaS) at the click of a button. The App Store allows instant provisioning of full-stack multi-tier applications written in a wide range of languages, runtimes, frameworks, and containers, integrating any number of enterprise-class data services like databases and messaging systems.
The App Store is a huge timesaver, but to make use of it you must have already built up the requisite infrastructure to support the PaaS, and you also need a Stackato cluster provisioned on top of this infrastructure.
Wouldn't it be nice if similar App Store functionality were available directly on the Infrastructure, allowing immediate one-click installation of the PaaS itself?
Well, now it is!
Stackato in the OpenStack Community App Catalog
Today the OpenStack Foundation unveiled the Community App Catalog specifically for this purpose: to provide a repository for complex full-stack Cloud applications such as databases, orchestration systems, and PaaS, including all configuration of all resources and components needed for deployment.
And ActiveState has taken the lead in building a Stackato Murano Package and making it available in the Community App Catalog.
The OpenStack Community App Catalog
The OpenStack Community App Catalog provides three distinct asset types:
- Glance Images (custom preconfigured VM images)
- Heat Templates (templates to create stacks in the cloud)
- Murano Packages (complete cloud-enabled applications ready to be deployed as a single instance or in a cluster).
This is an exciting development and alleviates the need to get mired in the somewhat tedious details of installing and configuring all the IaaS VMs, networking, and other resources to provision a higher level service or app.
Now when you want to install a complex multi-node PaaS on your OpenStack instance, you can do everything from the convenience of the Horizon OpenStack web-based user interface.
The Murano Project
Murano, not to be confused with the pretty islands in Venice famous for glass sculptures, provides both the API and User Interface underneath the application catalog, at a higher layer of abstraction than the HEAT orchestration engine provides. Murano packages available in the Community App Catalog allow OpenStack users to instantly compose and deploy complex applications, and to manage their lifecycles.
Stackato on Murano
This month I had the pleasure of working directly with some super-smart folks from Mirantis who guided me through the process to build up a Murano package for Stackato, and contribute it to the OpenStack project. This involved creating a slightly-customized Stackato image which included the Mirano agent, then building a handful of YAML files that are "invoked" to configure the cluster.
The Stackato-Murano package is in the public domain, and is available on github.
With the availability of this package, OpenStack users can provision an entire Stackato cluster with the click of a button.
Try this at Home
Assuming you have access to an OpenStack instance with Murano installed, the process of provisioning an entire Stackato cluster is trivial. In the Horizon UI you'll notice a Murano menu/tab on the left. Click Environments, create a new environment with your choice of name, then navigate to the Community App Catalog where you'll find the Stackato package ready to go. Simply drag this to your new environment, fill out a handful of properties in the panel that appears (make sure you specify m1.medium or larger for the image size), then click the Deploy button. After a few short minutes your Stackato node will be ready to go.
Under the Hood
The Stackato-Node-Murano package consists of a custom Stackato image, and a handful of YAML files and scripts that define the provisioning process.
The custom image is simply a standard Stackato image with the addition of the Murano agent, which is VM-resident guest agent that listens for and executes commands from Murano.
The YAML files define the step-by-step process to deploy the PaaS. The scripts define the resources required to configure and provision the underlying resources that the PaaS requires.
All This and UI Too
Oftentimes when building up a complex system there are parameters that must be specified by the user at build time. Properties like image size, hostname, ssh keys are examples. To allow the user to specify such properties, Murano defines user interface code, also specified in yaml and included in the package. This causes user interface elements such as panels, pulldowns, checkboxes, and textfields to appear during the provisioning process, prompting the user for these specific parameters.
The Murano packages, Glance Images, and Heat templates combine on the app store to provide a powerful mechanism for full-stack application and system deployment.
So Why the PaaS App Store?
You might be wondering: if the OpenStack Community App Store has all the power to deploy complex applications, then why bother with the PaaS at all? Why not just define the entire application stack in Murano, eliminating the need for the Platform Layer. After all, if Murano can provision a complex system like Kubernetes, or PaaS, it should easily be capable of deploying an enterprise application.
This is partially true: Murano is powerful and expressive, and Murano packages can easily be created to provision large complex multi-tier applications, and even entire microservices deployments.
But if you do choose to deploy everything at this layer you're missing out on countless major advantages that PaaS brings to the table. Sure you can provision your app, but then if you want to auto-scale it, or version it, or roll it back, or implement single signon, or integrate the app auth with LDAP or ActiveDirectory, or manage service discovery and orchestration... for all of these capabilities (and many more) you'd have to roll your own, or cobble together third party solutions to manage. You, or someone on your team, or multiple someones in your company will be responsible for designing, implementing, and maintaining all this complexity.
This is where PaaS shines. A Paas provides all this and much more, and provides it in an automated, self-service, multi-tenanted environment that's instantly ready to provision your applications and microservices.
And, importantly, a PaaS also allows you to "step away" from the Infrastructure: to build your apps so there are no dependencies on the IaaS layer. Apps written in such a way can easily be moved from OpenStack to AWS to VMWare with no changes.
Easier Than Amazon
By using the new OpenStack Community App Catalog, conjuring up the underlying infrastructure for PaaS is as easy as ordering a t-shirt on Amazon:
- Visit a webpage
- Find the item
- Choose the size (m1.medium fits quite well)
- Click a button
...and a full-featured enterprise-hardened Cloud Foundry PaaS is delivered right to your data center. You're now fully equipped to rapidly deliver secure, scalable, and available enterprise applications.
Try it now: visit the OpenStack Community App Store today and deploy your own Stackato instance, as easy as ordering a t-shirt. And you don't have to wait for next day delivery: the PaaS is ready to go in minutes.