Understanding Blueprint Schema
Users who wish to edit blueprints when exporting them to a deployment may need to understand the blueprint schema.
Simple Blueprint Structure
The following is an example of a simple blueprint. Note that this example includes line number that are referenced later in this topic.
1 id: Blueprint.CentOSAndApache 2. name: CentOSAndApache 3. status: PUBLISHED 4. components: 5. web: 6. type: Infrastructure.CatalogItem.Machine.Virtual.vSphere 7. data: 8. cpu: 1 9. memory: 10. min: 512 11. max: 8192 12. os_type: Linux 13. os_distribution: rhel 14. action: LinkedClone 15. archive_days: 1 16. provisioning_workflow: {id: CloneWorkflow} 17. lease_days: 3 18. source_machine_name: cbp_centos_63_x86 19. cost_center: sales 20. _cluster: 2 21. apache: 22. type: Software.Apache 23. data: 24. host: '${_resource~web}' 25. http_port: 8080
Each of these lines plays an important role in the blueprint structure.
- Lines 1 - 4 represent
possible top level blueprint fields that provide identifying information. The
only other possible field is
description
. The semantics of these fields is straightforward, but you can refer to java.classBlueprintDocument for more information. - Line 4 represents the blueprint components. Each key under components is the ID of the component that must be unique under the current blueprint.
- Lines 5 - 19 correspond to
the Web component. The following appear under any component data:
- The key
type
is mandatory and must refer to the component type on which the current component is based. - The key
dependsOn
is optional and contains the list of component IDs current component depends on. Component dependencies are extracted automatically based on property binding expressions. In most cases, you do not need to explicitly specify component dependencies. - The key
data
defines the component configuration and appears under all component data.- Key is the name of
the property or field of that component. This can be a property defined in the
corresponding component type.
Property or field option Example A property defined in the corresponding component type cpu
A reserved property _cluster
Custom property cost_center
- The value of the
field can be directly defined as in
cpu: 2
, or you can defines its constraints, as done for thememory
field in the example.
- Key is the name of
the property or field of that component. This can be a property defined in the
corresponding component type.
- The key
- Line 16 shows how to
specify and entity reference field. The available sub-keys are
id
andlabel
. - Line 24 depicts several
things.
${<field_path>}
provides a way to express the value of a field to come from another field._resource
is a reserved field ID that captures the output of entire blueprint. Output from each component is exposed under the same key as component ID. So in this case,host
value is set to the output of theweb
component thus saying theapache
component needs to be hosted on machine provisioned from theweb
component.- Whenever a property binding refers to output of some other component, it creates an implicit dependency between components.
Blueprint Constraints
To define constraints in any blueprint field. create a new hierarchy or level in YAML, and use any of the keys below to define constraints and their values.
ID or Key | Corresponding CAFE Constraint | Description |
---|---|---|
default | com.vmware.vcac.platform.content.facets.DefaultValueBehavior | Specifies the value for a field. |
fixed | com.vmware.vcac.platform.content.facets.FixedValueConstraint | Specifies the value for a field that cannot be overridden at request or reuse time. |
mandatory | com.vmware.vcac.platform.content.facets.MandatoryConstraint | Indicates that the field is mandatory. |
min | com.vmware.vcac.platform.content.facets.MinValueConstraint | Indicates the minimum value for a numeric field. |
max | com.vmware.vcac.platform.content.facets.MaxValueConstraint | Indicates the maximum value for a numeric field. |
minLength | com.vmware.vcac.platform.content.facets.MinLengthConstraint | Indicates the minimum length for a string field. |
maxLength | com.vmware.vcac.platform.content.facets.MaxLengthConstraint | Indicates the maximum length for a string field. |
minCardinality | com.vmware.vcac.platform.content.facets.MinLengthConstraint | Indicates the minimum cardinality for an array field. |
maxCardinality | com.vmware.vcac.platform.content.facets.MaxCardinalityConstraint | Indicates the maximum cardinality for an array field. |
increment | com.vmware.vcac.platform.content.facets.IncrementBehavior | Indicates the step or increment for a numeric field. |
regex | com.vmware.vcac.platform.content.facets.RegexpConstraint | Indicates the valid regex for a string field. |
secured | com.vmware.vcac.platform.content.facets.EncryptedBehavior | Indicates whether the field is to be treated securely. |
valid_values | com.vmware.vcac.platform.content.fields.PermissibleValueList | Defines the valid values for a field. |
Blueprint Components
The blueprint schema can include multiple components each with a corresponding API service.
Component | Responsible Service |
---|---|
VM node | IaaS |
Network and Security | Network |
Software components | Software |
Nested blueprints | Blueprint |
XaaS blueprints | XaaS |
Containers | IaaS |
Configuration Management | Config Management |
Other Components | Other Component |
For detailed information regarding each component and its corresponding service, see the Swagger specification available as https://$vRA/component-registry/services/docs#!/apis where $vRA denotes an instance of vRealize Automation.