OpenStack includes an orchestration service (Heat) that allows users to define their application infrastructure via one or more template files. Users can either leverage the native OpenStack Heat Orchestration Template (HOT) format or the Amazon Web Services (AWS) CloudFormation format.
You may be wondering, “What’s the point of using Heat when I already have access to the OpenStack APIs\CLIs for automation purposes?” Well, a significant benefit of using Heat is infrastructure lifecycle management.
Let’s discuss what that means by examining the virtual infrastructure that could be used to host a multi-tier application that consists of a web server, an application server, and a database server.
It is reasonable to simply use the nova API directly to deploy three instances in the infrastructure. However, there are other application components to consider. Most likely, these instances will be on private networks (perhaps one network per application tier). The application developer also needs to account for the router to connect to the outside world, and the floating IP that will be assigned to the web server so that users can access the application.
So, with this simple application infrastructure, the number of components is already piling up:
- Three instances
- One router
- Three tenant networks
- One floating IP
Making one-off API\CLI calls to deploy these components is fine during development. However, what happens when you’re ready to go to production? What if performance tests shows that our deployment requires multiple instances at each infrastructure tier?
It would be great to have a single deployment mechanism to provision the application infrastructure from detailed, static files that leaves zero room for error. Due to the simplicity of the YAML format, your HOT files can also be used as a documentation source for IT operation runbooks. These are just a couple benefits that can come from using Heat for your application infrastructure deployments.
The following video provides a detailed walkthrough of using the OpenStack orchestration service.