Cloud Objects
Tuono Schema
Supported Cloud Objects
Every item you build in a Tuono Blueprint is a Tuono object. For example, instances/VMS, subnets, security policies, protocols, load balancers, etc.
Each of the public clouds uses a different object model. Applying a Tuono Blueprint to AWS and Azure may create a different number of objects in each of the public clouds. We use Tuono objects to be sure the Tuono pricing is the same no matter which cloud you deploy into.
All the objects listed below correspond to supported cloud objects. While some represent stand-alone objects, e.g. virtual machine, network, subnet, managed database, etc., others likely only make sense in conjunction with other objects, e.g. nic, disk, etc.
The number of Tuono objects will vary based on your exact use case. Instances/VMs, subnets, security policies, protocols, load balancers, etc. are all Tuono objects. When you are getting started, a simple way to estimate your Tuono object count is to multiply the number of instances/VMs you plan to deploy by 3. An estimate is never perfect, but it will give you a reasonable starting point.
Overview
The Tuono Schema defines the infrastructure resources you can describe in blueprints.
managed
security
Content Types
The Tuono Schema defines a number of content types for different properties.
boolean
The value of a boolean can be true
or false
.
certificate
This property expects an OpenSSH certificate beginning with the text, -----BEGIN CERTIFICATE-----
.
cidr
An IP address block typically used in subnetting and firewall rules.
The general format of a CIDR is an IP address followed by a slash, then a mask (number) representing how many "bits" are relevant in the IP address. This is true for both IPv4 and IPv6 addresses. We recommend you use a CIDR Calculator to assist you with choosing the correct CIDR.
10.0.0.0/16
is an IPv4 CIDR with 65,536 addresses 10.0.0.0
through 10.0.255.255
.
10.0.100.224/27
is an IPv4 CIDR with 32 addresses 10.0.100.224
through 10.0.100.255
.
2001:db8:1234:1a00::/64
is an IPv6 CIDR with 18,446,744,073,709,551,616 addresses from 2001:db8:1234:1a00:0000:0000:0000:0000
through 2001:db8:1234:1a00:ffff:ffff:ffff:ffff
.
dict
A property of type dict
means the contents within are indented and structured similarly to the rest of the schema. When a property is a dict
the allowed keys and values are specified in the schema documentation. In the example below, default_policy
is a dict
property:
networking:
network:
my-network:
default_policy:
inbound: false
outbound: true
range: 10.0.0.0/16
integer
This is a whole number (a number without fractions). Some properties have minimum and maximum limits on integers.
iso8601
This is a globally accepted time format based on international standards:
YYYY-MM-DDTHH:MM:SSZ
YYYY = year (4 digit)
MM = month (2 digit, 01-12)
DD = day of month (2 digit, 01-31)
HH = hour (2 digit, 00-23)
MM = minute (2 digit, 00-59)
SS = second (2 digit, 00-59)
ip
This is an IPv4 or IPv6 address.
list
An ordered sequence of one or more items, each of which will have a specific type. For example, you may have a list
of cidr
for a network range:
networking:
network:
my-network:
range:
- 10.0.0.0/16
- 10.0.100.0/16
In this case the network range is expressed as a list. In the previous example the range is expressed as a string. For this property, the schema will accept either.
mac
This is an IEEE EUI-48 standard MAC Address that has the form XX:XX:XX:XX:XX:XX
or XX-XX-XX-XX-XX-XX
where X
is a hexadecimal. There's a very good chance you will never need to know the discovered MAC address for a NIC.
port_range
A single port number or range range of port numbers within 1-65535 is allowed.
private_key
This property expects an OpenSSH private key beginning with the text, -----BEGIN RSA PRIVATE KEY-----
.
ref
A reference to another resource in the environment. For example in the following example, the location.folder.myapp.region
property is a ref to location.region.preferred
:
location:
region:
preferred:
country: USA
area: northwest
folder:
myapp:
region: preferred
If the ref type is a single class, simply using the name is allowed (as shown). For ref types that accept more than one type, for example the depends_on
property, you must use the fully-qualified blueprint name.
size
A representation of a size, either memory or storage. It can be expressed in a variety of ways. Both the traditional binary or decimal forms are rounded to the values that the venues use, which is the binary system. In other words, although 1 MB
is equal to 1,000,000 bytes, it will be interpreted as 1 MiB
which is 1,048,576 bytes.
The following all equate to one tebibyte () or 1 TiB
. Those of us who have been in the industry long enough may recognize this as a "terabyte".
1tb
1Tb
1TB
1 tb
1 Tb
1 TB
1tib
1Tib
1TiB
1 tib
1 Tib
string
A text string, for example description is a string:
variables:
cores:
description: The number of cores.
It is not normally necessary to quote a text string unless a special character is used at the beginning of the string. For example if a string begins with a hyphen the interpreter would consider it a list, so it must be quoted:
variables:
cores:
description: "- The number of cores -"
Longer strings require YAML syntax called "block scalars". It sounds scary, but it's pretty easy to remember once you have used them a few times. We recommend anything that cannot fit on a line, like a SSH Public Key, be turned into a variable, since it is easier to paste a variable into the portal than to place it into a blueprint. Plus, making it a variable makes the blueprint more reusable.
If you need to insert a long string, you can use the folded block scalar to convert line breaks in the indented block into spaces:
variables:
cores:
description: >-
This is the number of cores to assign to each virtual machine
instance in the blueprint.
The description then turns into:
"This is the number of cores to assign to each virtual machine instance in the blueprint."
throughput
Throughput is expressed just like size, but is done so over time, so it becomes a rate of transfer. For example, 40 MiB/s
is 40 mebibytes (though most of us still say megabytes) per second.
timespan
A human-readable time span, such as "3 seconds", "5 min", "2d". This can also be an ISO8601 Duration such as "PT5M" which is equivalent to "5 minutes".
url
This is a uniform resource locator, which looks like the string in the address bar at the top of your browser. For example, https://portal.tuono.io/
.
uuid
This is a universally unique identifier, also sometimes referred to as a GUID. For example, 4c66956e-c66c-454a-9dfa-36de01b70c64
. For more information on UUIDs, see RFC4122.
Last updated
Was this helpful?