Authoring
Writing Effective Blueprints
Blueprints are written using the Tuono Schema. The Tuono Schema allows you create a portable description of your infrastructure that may be customized and reused. To make a blueprint you will need to understand some basics about the Tuono Schema.
We based our schema language on the popular YAML text format. YAML is an acronym that stands for “YAML Ain’t Markup Language” (which was clearly funny to someone, once), and is designed to be a human-friendly data file. Let’s familiarize ourselves with basic YAML concepts by defining a disk using the Tuono Schema:
# this is a comment
storage: # category
disk: # class
records: # blueprint name
size: 2 TiB # properties of the disk
type: ssd
tags:
# tags are key: value string pairs
totally: awesome
logs:
size: 64gb
type: hdd
One of the core design goals behind our schema is that it should be immediately recognizable and understandable if you are familiar with standard IT concepts such as disks, networks, and virtual machines. In this example we have defined two disks with different characteristics that are self-evident. Our schema language even allows for flexible units when describing size and throughput. Each disk is a separate resource that can be provisioned.
Comments in a blueprint start with a pound sign (#
). Examples of whole-line and inline comments are shown above as well.
In a blueprint, any line without whitespace at the beginning declares a category. There can only be one category of a given name in a blueprint. If the same category is provided twice in the same blueprint, the first one is ignored (this is a known issue).
The next indentation are classes of items within that category. In this example we have a storage
category and a disk
class. There can be only one class of a given name in a category If the same class is provided twice in the same category, the first one is ignored (this is also a known issue).
At the third indentation level we are defining a resource within the disk
class. In this example there are two disks defined. Each of these disks is considered an independent resource that will be provisioned. Their respective fully-qualified blueprint identities are storage.disk.records
and storage.disk.logs
.
Last updated
Was this helpful?