OpenStack Heat Templates
OpenStack Heat Template Overview:
- OpenStack Heat is a build language for the cloud. The underlying distributed state machine architecture of OpenStack Heat Templates open up powerful new possibilities for advanced workflow automation.
- OpenStack Heat Template self documenting syntax encourages transparency and easily reproducible outcomes. The ease with which infrastructure can be provisioned enables you to quickly experiment with different environments for your applications.
OpenStack Heat Orchestration Templates:
- OpenStack Heat Template are prepackaged combined configurations that include both infrastructure builds and application stacks, which are utilized for rapid single-click provisioning of cloud environments.
- All NephoScale customers can leverage the single-click templates in the NephoScale Template Library.
- Experts such as NephoScale engineers, members of the OpenStack developer community, and Independent Software Vendors (ISV) develop and optimize Heat Templates.
- The community extends the functionality and further develops the capabilities of the NephOS cloud services platform.
- The benefit of Heat templates created by OpenStack community members with domain expertise is that they understand all the systems configurations for specific environments so the templates will work the first time and every time.
- The NephoScale prepackaged templates represent a collection of resources, corresponding application stacks, and associated scripts/recipes.
- Start with a single server stack and run a template as-is, or start with a multi-server stack and make modifications to the template to facilitate the expanded infrastructure environment.
- Easily modify a template after it has been deployed so the stacks it contains can be applied to any reference architecture.
- Create any sized environment from small a single server to a complex multi-server environment, including a fully load balanced LAMP stack with complimentary ObjectStor object-based cloud storage
- Deploy any template across any reference architecture. If infrastructure requirements grow over time, add additional servers to scale the infrastructure using templates provided free of charge by NephoScale
- Our approach to cloud computing is based on our experience as service providers and from what we have learned helping organizations to use IaaS as an enabling technology for the implementation of Developer Operations (DevOps) practices and Agile software development methodologies. We want to make it easy for you to treat the infrastructure as code for your application like any other artifact in your project lifecycle. Using Heat Templates you will be able to quickly develop, use less code, keep it simple, don’t repeat yourself, and be explicit all through a simple and consistent framework.
- In addition to OpenStack Heat Templates, and CLI ToolKits made available by the community, we provide a complimentary RESTful API. The consistency of design between OpenStack Heat Templates and the RESTful API make it easy for you to use a combination of thin client or thick client programming models depending on your needs. With OpenStack Heat Templates you can orchestrate any element of the NephoScale platform, and you might choose it in a thin client approach to encapsulate all the operational intelligence for your application in a single location. Or, you might prefer that your management application resides elsewhere in a thick client approach making simple RESTful API calls. Of course you may mix and match thin client and thick client programming. Its up to you to decide on the best architecture for your application.
- More than anything else our goal was to take the best of programming IaaS and improve it. The execution model is simple and easy to understand. The syntax is inspired by make and rake. Embedded code can be included in its original form without any mangling or escaping of characters. It is easy to read.
Principles of OpenStack Heat Templates
- The Heat build language is characterized by four primary design principles. First, its dependency based programming provides a computational model of tasks and their dependencies where the execution order can be explicitly specified. Second, because most steps in a build process are idempotent, Heat Templates support granular control over repetitive operations. Third, it provides an enveloping capability for delivering any embedded code you want such as Bash, Perl, Ruby, etc. to be run on your servers. Finally, its distributed state machine architecture allows you to synchronize partially ordered events and pass data between resources to enable advanced workflow automation.
Dependency Based Programming
- As with most build languages OpenStack Heat Templates use a dependency based model where we have tasks with specific pre-requisites as their dependencies. With Heat Templates you can explicitly declare all pre-requisites so you have maximum control, or you can allow the interpreter to define the dependencies based on what it chooses as the best execution order.
- It’s natural to think of a build in terms of tasks and dependencies and most steps in a build are idempotent. Idempotency is a very useful property because it means that we can repeat or retry an operation as often as necessary without causing unintended effects. Further, when provisioning or autoscaling an environment we really don’t want unnecessary work to slow down the build and if a resource already exists then we should not go to the trouble of repeating or retrying an operation.
Enveloping and Embedded Languages
- Enveloping languages work well for simple control of other programs, and much of the inspiration for OpenStack Heat Templates comes from make, Unix pipes and rake. It provides a limited set of abstractions and data structures for provisioning resources and for managing the dependencies between infrastructure resources required to create full fledged applications. By embedding other more powerful languages within Heat Templates to be run on the provisioned servers you can program all kinds of infrastructure and application configurations in a single location.
Distributed State Machine
- In a distributed system the order in which events occur is only a partial ordering, and it’s sometimes impossible to say which of two events happened first. Because the Heat Template interpreter creates an event loop for each resource provisioning thread you can use it to synchronize advanced configurations of distributed systems such as clustered software applications or data processing applications to ensure that the environment configuration or the processing job is completed before moving on to the next step. By allowing data to be piped from one resource to another Heat Templates allow you chain together processing steps much like the Unix pipes allow for redirection of standard output from one process to another.