Data models
Setups
A setup describes how a virtual machine (VM) should be created by Steep’s cloud manager.
| Property | Type | Description |
|---|---|---|
| id (required) | string | A unique setup identifier |
| flavor (required) | string | The flavor of the new VM |
| imageName (required) | string | The name of the VM image to deploy |
| availabilityZone (required) | string | The availability zone in which to create the VM |
| blockDeviceSizeGb (required) | number | The size of the VM’s main block device in gigabytes |
| blockDeviceVolumeType (optional) | string | An optional type of the VM’s main block device. By default, the type will be selected automatically. |
| minVMs (optional) | number | An optional minimum number of VMs to create with this setup. The default value is 0. |
| maxVMs (required) | number | The maximum number of VMs to create with this setup |
| maxCreateConcurrent (optional) | number | The maximum number of VMs to create and provision concurrently. The default value is 1. |
| provisioningScripts (optional) | array | An optional list of paths to provisioning scripts that should be executed on the VM after it has been created |
| providedCapabilities (optional) | array | An optional set of strings specifying capabilities that VMs with this setup will have |
| sshUsername (optional) | string | An optional username for the SSH connection to the created VM. Overrides the main configuration item steep.cloud.ssh.username if it is defined. |
| additionalVolumes (optional) | array | An optional list of volumes that will be attached to the VM |
| parameters (optional) | object | An optional custom object with user-defined properties. Use this object to pass arbitrary values to provisioning scripts where they can be accessed through the global variable setup. |
| creation (optional) | object | An optional creation policy that defines rules for creating VMs from this setup. Default values for this parameter are defined in the main configuration. |
Example
id: default
flavor: 7d217779-4d7b-4689-8a40-c12a377b946d
imageName: Ubuntu 18.04
availabilityZone: nova
blockDeviceSizeGb: 50
minVMs: 0
maxVMs: 4
provisioningScripts:
- conf/setups/default/01_docker.sh
- conf/setups/default/02_steep.sh
providedCapabilities:
- docker
additionalVolumes:
- sizeGb: 50
type: SSDVolumes
This data model describes an additional volume that can be attached to a virtual machine specified by a setup.
| Property | Type | Description |
|---|---|---|
| sizeGb (required) | number | The volume’s size in gigabytes |
| type (optional) | string | Type the volume’s type. By default, the type will be selected automatically. |
| availabilityZone (optional) | string | The availability zone in which to create the volume. By default, it will be created in the same availability zone as the VM to which it will be attached. |
| deviceName (optional) | string | The device name under which the volume will be exposed to the operating system on the virtual machine (e.g. /dev/sdb). Please note that this value is mandatory for some cloud providers, while for others, it is optional and they automatically assign a name. Some even ignore this value completely (e.g. OpenStack). Also, some cloud providers only accept names that correspond to a specific scheme. Please refer to your cloud provider’s documentation on whether specifying a name is mandatory and which values are considered valid. |
Example
sizeGb: 50
type: SSD
availabilityZone: novaCreation policies
A creation policy defines rules for creating VMs from a certain setup.
| Property | Type | Description |
|---|---|---|
| retries (optional) | object | An optional retry policy that specifies how many attempts should be made to create a VM (if creation fails) as well as possible (exponential) delays between those attempts. If this property is null, default values from the steep.yaml file will be used. |
| lockAfterRetries (optional) | duration | When the maximum number of attempts to create a VM from a certain setup has been reached, the setup will be locked and no other VM with this setup will be created. This property defines how long it will stay locked. |
Example
retries:
maxAttempts: 5
delay: 40s
exponentialBackoff: 2
lockAfterRetries: 20m