Puccini
Deliberately stateless cloud topology management and deployment tools based on
TOSCA.
Puccini is primarily a TOSCA processor. Its main function is to parse a TOSCA service template
and compile it into the Clout format.
Let's dive in!
Note that Puccini is intentionally not an orchestrator. This is a "BYOO" kind of establishment
("Bring Your Own Orchestrator").
If you are looking for a comprehensive TOSCA orchestrator for
Kubernetes based on Puccini, check out
Turandot. Puccini also
enables TOSCA for Ansible using custom extensions.
Also included are examples of generating Ansible playbooks for OpenStack
as well as generating BPMN processes for middleware integration.
For a TOSCA development environment, check out the
TOSCA Visual Studio Code Extension, which is based
on Puccini (work in progress).
Get It
To build Puccini yourself see the build guide.
Overview
Distribution
Each tool is a self-contained executable file, allowing them to be easily distributed with and
embedded in toolchains, orchestration, and development environments. They are coded in 100%
Go and are very portable, even available for
WebAssembly (which is how the in-browser demo linked above works).
You can also embed Puccini into your program as a library. Puccini is immediately usable from Go,
but can be used in many other programming languages via self-contained shared C libraries. See
included wrappers and examples for Java, Python, and
Ruby.
Dialects
Puccini can parse all versions of TOSCA:
Additionally, Puccini can parse the following TOSCA-like dialects:
TOSCA is a complex object-oriented language. We put considerable effort into adhering to every
aspect of the grammar, especially in regards to value type checking and type inheritance contracts,
which are key to delivering the object-oriented promise of extensibility while maintaining reliable
base type compatibility. Unfortunately, the TOSCA specification can be inconsistent and imprecise.
For this reason, Puccini also supports quirk modes that enable alternative
behaviors based on differing interpretations of the spec.
Packaging
The TOSCA source can be accessed by URL, on the local file systems or via HTTP/HTTPS, as
individual files as well as packaged in
CSAR files.
Puccini also comes with a simple CSAR creation tool, puccini-csar.
Design Principles
Puccini's TOSCA parser comprises 5 multi-threaded phases that handle validation,
inheritance, assignment, and normalization of TOSCA's many types and templates, resulting in a
flat, serializable data structure that can be directly consumed by your program.
Validation error messages are precise and useful.
FAQ
Please read it!