August 18, 2014 | Written by: Sahdev Zala
Share this post:
As this is my first time blogging on Thoughts on Cloud, I would like to take this opportunity to introduce myself. My name is Sahdev Zala and I am an advisory software engineer at IBM working on OpenStack for the past two years. I started my journey in OpenStack with a focus on Keystone LDAP backend enhancements.
Most recently, I have been working on OpenStack’s Heat orchestration project to work on providing support for native Heat Orchestration Template (HOT) and align it with an OASIS open standard called Topology Orchestration Specification for Cloud Applications (TOSCA). I joined the TOSCA technical committee (TC) to contribute to its development. TOSCA is a new cloud technology that I want to discuss today as it defines, for the first time, a means to describe applications, including their components, relationships and dependencies in a way that allows them to be portable to any cloud that supports the TOSCA standard.
The most interesting work is being done on the TOSCA Simple Profile in YAML Version 1.0, which just published its second working draft with a third planned to release in the next month. TOSCA has a large number of companies and organizations that actively support and contribute to its development, such as Alcatel-Lucent, Cisco, Fujitsu, GigaSpaces, Huawei, SAP and Vnomic along with IBM. IBM is active in the development of this standard and takes a leadership role where possible, including co-chairing the TOSCA TC and its Interoperability subcommittee.
One of the things that came out of early TOSCA TC discussions is that it is highly beneficial to cloud providers and users if TOSCA can be deployed via open cloud technologies like OpenStack. This was discussed between the OpenStack Heat core team and the IBM TOSCA team at the OpenStack Hong Kong Summit in 2013.
From the discussion, two things became clear. First, TOSCA needed to provide a simple way to express workload topology in YAML. It also became clear that a good way to deploy TOSCA workload initially in OpenStack is via converting TOSCA service templates to HOT. After the summit, I discussed the Heat Project Technical Lead (PTL) for the OpenStack IceHouse release and other members of the Heat core team. As an outcome, I started a StackForge project called Heat-Translator in early 2014, which is aimed to provide a translation layer on top of Heat to convert TOSCA templates to HOT and then deploy the converted template via Heat.
The TOSCA translator tool is designed to be generic enough to provide a base for translating any non-HOT templates to HOT. The Heat-Translator project is expected to be consumed by the Heat-Client. The Heat-Translator project currently has development contribution from IBM, Huawei and GigaSpaces, and more developers from companies like Cisco are expected to be on board shortly.
The Heat-Translator project is a work in progress. At present, the Heat-Translator tool takes TOSCA templates as an input and produces a HOT template which can be deployed via Heat. Development work is going on to provide support for TOSCA Cloud Services Archive (CSAR) as an input as well. The TOSCA CSAR is a container with TOSCA template and needed artifacts, such as installation and configuration scripts, by the template.
Below is a high level architecture diagram:
Figure 1: Heat-Translator architecture
The TOSCA parser in the Heat-Translator is a stand-alone TOSCA parser, which produces an in-memory graph of the TOSCA template. The translator code takes this in-memory graph and maps it to Heat resources, utilizing the software configuration support that is provided in Heat with the Icehouse release of OpenStack, and produces a HOT template. A more native support in Heat for TOSCA life cycle operations is under development. The following snippet shows an example of the WordPress TOSCA node template (Fig 2) and resulting Heat resource in HOT template (Fig 3):
Figure 2: Snippet of TOSCA template with WordPress node
Figure 3: Snippet of HOT template with WordPress resource
What to expect in the near future
Currently the development and testing was done against two use cases demonstrating translation of a template with WordPress, MySQL, Web Server and a TOSCA compute node. The TOSCA YAML templates for those use cases can be found in the Heat-Translator StackForge project under the tests data of the TOSCA library. The development of Heat-Translator is going on in parallel to ongoing development in the TOSCA specification. Translation support for BlockStorage (mapped to Heat Cinder resource), Networking (mapped to Heat Nova and Neutron resource), Monitoring and TOSCA CSAR is underway and will be available soon.
Want to Contribute?
You are welcome to contribute to Heat-Translator community, please refer to the Launchpad project.