So many apps, so little time.
Developing applications for cloud can be a complicated process; you need to think about resources, placement, scheduling, creating virtual machines, networking... or do you? The OpenStack Murano project makes it possible for you to create an application without having to worry about directly doing any of that. Instead, you can create your application, package it with instructions, and let Murano do the rest.
In other worlds, Murano lets you much more easily distribute your applications -- users just have to click a few buttons to use them.
Every day this week we're going to look at the process of creating OpenStack Murano apps so that you can make your life easier -- and get your work out there for people to use without having to beg an administrator to install it for them.
We'll cover the following topics:
- Day 1: What is Murano, and why do I need it?
In this article, we'll talk about what Murano is, who it helps, and how. We'll also start with the basic concepts you need to understand and let you know what you'll need for the rest of the series.
- Day 2: Creating the development environment
In this article, we'll look at deploying an OpenStack cluster with Murano so that you've got the framework to work with.
- Day 3: The application, part 1: Understanding Plone deployment
In our example, we'll show you how to use Murano to easily deploy the Plone enterprise CMS; in this article, we'll go over what Murano will actually have to do to install it.
- Day 4: The application, part 2: Creating the Murano App
Next we'll go ahead and create the actual Murano App that will deploy Plone.
- Day 5: Uploading and troubleshooting the app
Now that we've created the Plone Murano App, we'll go ahead and add it to the application catalog so that users can deploy it. We'll also look at some common issues and how to solve them.
Before you start
Before you get started, let's make sure you're ready to go.
What you should know
Before we start, let's get the lay of the land. There's really not that much you need to know before building a Murano app, but it helps if you are familiar with the following concepts:
If you are not familiar with these concepts, don't worry; you will be able to learn more about them as we move forward.
- Virtualization: Wikipedia says that "Hardware virtualization or platform virtualization refers to the creation of a virtual machine that acts like a real computer with an operating system." Perhaps that's an oversimplification, but it'll work for us here. For this series, it helps to have an understanding of virtualization fundamentals, as well as experience in the creation, configuration and deployment of virtual machines, and the creation and restoration of VM snapshots.
- OpenStack: OpenStack is, of course, a cloud computing platform that helps to orchestrate and manage these virtual resources for you; Murano is a project that runs on OpenStack.
- UNIX-like OS fundamentals: It also helps to understand command line, basic commands and the structure of Unix-like systems. If you are not familiar with the UNIX command line you might want to study this Linux shell tutorial first.
- SSH: It helps to know how to generate and manage multiple SSH keys, and how to connect to a remote host via SSH using SSH keys.
- Networks: Finally, although you don't need to be a networking expert, it is useful if you are familiar with these concepts: IP, CIDR, Port, VPN, DNS, DHCP, and NAT.
What you should have
In order to run the software we'll be talking about, your environment must meet certain prerequisites. You'll need a 64-bit host operating system with:
- At least 8 GB RAM
- 300 GB of free disk space. It doesn’t matter if you have less than 300 GB of real free disk space, as it will be taken by demand. So, if you are going to deploy a lightweight application then maybe even 128 GB will be enough. It’s up to your application requirements. In the case of Plone, the recommendation is 40MB per site to be deployed.
- Virtualization enabled in BIOS
- Internet access
What is OpenStack Murano?
Imagine you're a cloud user. You just want to get things done. You don't care about all of the details, you just want the functionality that you need.
Murano is an OpenStack project that provides an application catalog, like the AppStore for iOS or GooglePlay for Android. Murano lets you easily browse for cloud applications you need by their name or category, and then enables you to rapidly deploy them to the cloud with just a few clicks.
For example, if you want a web server, rather than having to create a VM, find the software, deploy it, manage IP addresses and ports, and so on, Murano enables you to simply choose a web server application, name it, and go; Murano does the rest of the work.
Murano also makes it possible to easily deploy applications with multiple components. For example, what if you didn't just want a web server, but you wanted a Wordpress application, which includes a web server database, and web application? A pre-existing Wordpress Murano app would make it possible for you to simply choose the app, specify a few parameters, and go. (In fact, later in this series we'll look at creating an app for an even more complex CMS, Plone.)
Because it's so straightforward to deploy the applications, users can do it themselves, rather than relying on administrators.
Moreover, not only does Murano let users and administrators easily deploy complex cloud applications, it also completely manages application lifecycles such as auto scaling-up and scaling-down clusters, providing self-healing and more.
Murano’s main end users are:
In short, Murano turns application deployment and managing processes into a very simple process that can be performed by administrators and users of all levels. It does this by encapsulating all of the deployment logic and dependencies for the application into a Murano App, which is a single zip file with a specific structure. You just need to upload it to your cloud and it's ready.
- Independant cloud users, who can use Murano to easily find and deploy applications themselves.
- Cloud Service Owners, who can use Murano to save time when deploying and configuring applications to multiple instances or when deploying complex distributed applications with many dependent applications and services.
- Developers, who can use Murano to easily deploy and redeploy on-demand applications, many times without cloud administrators, for their own purposes (for example for hosting a web-site, or for the development and testing of applications). They can also use Murano to make their applications available to other end users.
Why should I create a Murano app?
OK, so now that we know what a Murano app is, why should we create one? Well, ask yourself these questions:
(Do you notice a theme here?)
There are also reasons for creating Murano Apps that aren't necessarily related to saving time or being more efficient:
- Do I want to spend less time deploying my applications?
- Do I want my users to spend less time (and aggravation) deploying my applications?
- Do I want my employees to spend more time actually getting work done and less time struggling with software deployment?
All you need to do to make these things possible is to develop a Murano App for your own application.
- You can make it easier for users to find your application by publishing it to the OpenStack Community Application Catalog, which provides access to a whole ecosystem of people across fast-growing OpenStack markets around the world. (Take a look how huge it is by exploring OpenStack User-stories.)
- You can develop your app as a robust and re-usable solution in your private OpenStack сloud to avoid error-prone manual work.
Where we go from here
OK, so now we know what a Murano App is, and why you'd want to create one. Join us tomorrow to find out how to create the OpenStack and developer environment you'll need to make it work.
And let us know in the comments what you'd like to see out of this series!