Use these instructions to describe your product template for your tile, and learn how to edit it to include different properties.
The metadata
subdirectory of a tile contains a product template file in YAML file format. The product template file specifies how the tile interface collects configurable properties from the user, and how Tanzu Operations Manager incorporates these properties into the deployment manifest.
The product template, a YAML file in the tile’s metadata
subdirectory, includes or points to:
Metadata: High-level information about your tile
Dependencies: Tile dependencies
Property blueprints: Templates to represent values
Form types: Property blueprints to generated forms
Job types: Configuration properties for jobs defined in the BOSH release
Runtime configs: The manifest for any number of global deployment configurations
Use the product template in the Tanzu Operations Manager example tile. This is a functional tile provided by the Tanzu Operations Manager engineering team; it deploys the NGINX web server.
For more information about product template configuration, see Top-level properties.
To learn how to configure your tile’s forms, see Form properties.
You can edit the product template to designate property values.
The product template contains two sections with manifest
snippets:
form_types
: Defines the tile interface, or how users of your tile view and interact with different tile features
job_types
: Defines the jobs that the manifest deploys, or what the tile does in response to user input, developer input, or at set intervals
You can use special expressions in these snippets to include property values that the tile might otherwise not use; for example, user-provided configurable properties or dynamically-generated system properties.
These special expressions take the following forms:
Double parentheses expressions, such as (( PROPERTY-VALUE ))
, designate property values that Tanzu Operations Manager uses when it generates the deployment manifest. These are used after you click Apply Changes.
These values include configurable properties and properties supplied by Tanzu Operations Manager.
To include these properties in a manifest snippet, use “double-parens” syntax, which consists of a variable name surrounded by two sets of parentheses, as shown in the following example:
manifest: |
pizza_toppings:
peppers: (( .properties.example_selector.pizza_option.peppers.value ))
Triple-parentheses expressions, such as ((( PROPERTY-VALUE )))
, designate property values that BOSH supplies when it deploys instances of the tile service; for example, CredHub credentials are specified in triple parentheses.
To include these BOSH deploy-time properties in a manifest snippet, use “triple-parens” notation, as shown in the following example:
manifest: |
credhub:
concatenated_password: prefix-((( credhub-password )))-suffix
password: ((( credhub-password )))
When Tanzu Operations Manager parses a product template and BOSH parses a manifest, they both use properties designated by double-parens syntax.
Some property values in a product template, such as CredHub credentials, must be filled in by BOSH on the BOSH Director VM, rather than by Tanzu Operations Manager.
Tanzu Operations Manager removes the outer parentheses from these expressions and includes the resulting double-parens expressions in the manifest it generates, for BOSH to evaluate at deploy time.
Each property is represented by two segments:
When you use these two segments, you can write an expression like this:
(( PROPERTY-LOCATION.ACCESSOR ))
Where:
PROPERTY-LOCATION
is the location of the property.ACCESSOR
is the accessor.The following table describes the different methods of referencing a property:
Method Name | Description |
---|---|
.properties.top_level_property | The property blueprint called “top_level_property” found in the global list of properties of the same tile. |
.job_one.job_level_property | The property blueprint called “job_level_property” found in the list of properties of the job “job_one” of the same tile. |
job_level_property | The property blueprint called “top_level_property” found in the same tile and job whose manifest is being evaluated. |
..other_product.properties.top_level_property | The property blueprint called “top_level_property” found in the global list of properties of the tile “other_product”. |
..other_product.job_two.job_level_property | The property blueprint called “job_level_property” found in the list of properties of the job “job_one” of the tile “other_product”. |
Accessors may be different from one property blueprint types to another. The following example uses the property blueprint type string
with its one accessor, value
:
(( .properties.example-string.value ))
Tanzu Operations Manager allows empty arrays in double-parentheses expressions.
For example:
(( .properties.example-string.value || [] ))
For more information about the available properties and their accessors, see the Property Blueprint reference section.
Product context is useful for accessing information about a tile. It can be used in a manifest using this syntax:
(( ..TILE-NAME.accessor ))
Where TILE-NAME
is the name of the tile.
These are the allowed accessors:
Accessor | Description |
---|---|
deployment_name | Provides the deployment name passed to BOSH for the tile |
network_name | Provides the name of the network assigned for the tile |
present? | Returns true when the tile is staged or deployed |
Outside of properties, you can also retrieve information about various configuration details of your tile and Tanzu Operations Manager.
$ops_manager: Any tile uses this to obtain information about specific Tanzu Operations Manager deployments.
$director: Any tile uses this to obtain information about the BOSH Director.
$runtime: Any tile uses this to obtain information about the VMware Tanzu Application Service for VMs tile.
$self: Your own tile uses this to obtain information about its configuration.
The following table describes the accessors you can use to retrieve information about an Tanzu Operations Manager deployment:
Accessor | Description |
---|---|
ca_certificate |
Provides the root CA certificate that signs the Director VM |
trusted_certificates |
Provides a list of certificates that the Director applies to all VMs |
http_proxy |
Provides the comma-separated values (CSV) that are entered when Tanzu Operations Manager traffic is directed to an HTTP proxy |
https_proxy |
Provides the CSVs that are entered when Tanzu Operations Manager traffic is directed to an HTTPS proxy |
no_proxy |
Provides the CSVs that should not go through a proxy |
instance_types_catalog |
Provides a list of all available VM types; includes custom VM types |
restricted_view_api_access_credentials |
Provides a payload for a UAA client to make read-only non-credential requests against Tanzu Operations Manager. The payload includes uaa_client_name , uaa_client_secret , hostname , and port . |
iaas_type |
Provides the type of the infrastructure: google , aws , azure , vsphere , or openstack |
The following table describes the accessors you can use to retrieve information about your BOSH Director:
Accessor | Description |
---|---|
guid |
Unique identifier for the BOSH Director |
deployment_ip |
Provides the IP address where the BOSH Director is deployed |
username |
Provides the user name for the BOSH Director VM |
password |
Provides the password for the BOSH Director VM |
ntp_servers |
Provides a list of Network Time Protocol (NTP) servers that the BOSH Director deploys |
ca_public_key |
Provides the public key that is used to sign the BOSH Director VM |
hostname |
Provides the hostname for the BOSH Director VM |
tld |
Returns the string bosh as the top-level domain (TLD) of the BOSH Director |
system_metrics_runtime_enabled |
Exposes whether the ops_manager_system_metrics_runtime is added to the BOSH Director |
metrics_server_enabled |
Deprecated. Always returns false |
bosh_metrics_forwarder_client_name |
Deprecated. Always returns a constant, non-credential value |
bosh_metrics_forwarder_client_secret |
Deprecated. Always returns a constant, non-credential value |
The following table describes the accessors you can use to retrieve information about your TAS for VMs tile:
Accessor | Description |
---|---|
system_domain |
Provides domain for system-level TAS for VMs components, such as the API, UAA, or Apps Manager |
apps_domain |
Provides the default domain used by apps |
system_api_url |
Provides the URL to the TAS for VMs API component |
login_url |
Provides the URL to authenticate with the TAS for VMs components |
uaa_url |
Provides the URL to the TAS for VMs UAA component |
console_url |
Provides the URL to the TAS for VMs Apps Manager component |
default_reply_to |
Provides the default reply-to email address for the system domain |
default_from |
Provides the default from email address of the system domain |
The following table describes the accessors you can use to retrieve information about your own tile:
Accessor | Description |
---|---|
uaa_client_name |
Provides the UAA client name created for your tile to communicate with the BOSH Director |
uaa_client_secret |
Provides the UAA client secret created for your tile to communicate with the BOSH Director |
bosh_read_creds_name |
Provides the read-only UAA client name created for your tile to access BOSH Director |
bosh_read_creds_secret |
Provides the read-only UAA client secret created for your tile to communicate with the BOSH Director |
service_network |
Provides the name of the service network assigned to your tile |
stemcell_version |
Provides the version of the stemcell your tile uses |
Most properties are simple values, for example, strings, integers, URL addresses, or IP addresses. Others are complex, like selectors or collections.
The selector and collections inputs are referenced by their selector and collection property blueprints.
Most properties are simple values such as strings, integers, URL addresses, or IP addresses. Selectors and collections are more complicated than simple properties, because they contain manifest snippets, which are further referenced in other manifest snippets. Selector and collection properties can only exist as top-level properties.
You cannot nest:
The rsa_cert_credentials
property with configurable: false
is invalid inside a selector
property.
The tile does not raise any validation errors, but the following error appears during the pre-deploy check:
{
"pre_deploy_check": {
...
"properties": [
{
"name": ".properties.EXAMPLE-CERT-PROPERTY",
"type": "rsa_cert_credentials",
"errors": [
"can't be blank",
"can't be blank"
]
}
],
...
}
}
Where EXAMPLE-CERT-PROPERTY
is the property you specify.
The following example shows the properties that appear at the top of a product template. The definitions of each property follow this example:
---
name: example-tile
product_version: "1.0-build.0"
minimum_version_for_upgrade: "1.7.0"
pivnet_filename_regex: "tile-*.pivotal"
metadata_version: "1.11"
opsmanager_syslog: true
label: 'Ops Manager: Example Tile'
description: An example tile to demonstrate Ops Manager tile author features
rank: 1
service_broker: false # Default value
stemcell_criteria:
os: ubuntu-xenial
version: "97.0"
enable_patch_security_updates: true
requires_product_versions:
- name: p-mysql
version: '~> 2.4'
releases:
- name: example-release
file: "example-release.tgz"
version: "15"
variables:
- name: credhub-password
type: password
post_deploy_errands:
- name: example-errand
pre_delete_errands:
- name: example-errand
runtime_configs:
- name: example-runtime-config
runtime_config: |
releases:
- name: os-conf
version: 15
addons:
- name: login
jobs:
- name: login-banner
release: os-conf
properties:
login_banner:
text: |
(( .properties.example_string.value )).
The internal name of the tile.
You must keep the name of your tile consistent for migrations to function properly. Changing the name indicates the installation of a different finished tile.
The version of the tile.
You can import this version into Tanzu Operations Manager only once. If you want to import the same tile or version, you must delete the existing one from the /metadata
folder and delete the installation files from the Tanzu Operations Manager disk.
The version number is important for migrations.
For more information, see Upgrading Tiles.
You must set a minimum version for upgrading to your current tile version. The following example shows a current tile version of v1.7 that upgrades only from a v1.6.x version of the same tile:
- product_version: 1.7.0.0
minimum_version_for_upgrade: 1.6.0.0
The version of the schema of the product template (the file that this topic describes).
If you bump the version number, it activates new properties that are not present in an older metadata_version
. It can also require you to restructure the product template to conform to the new metadata_version
.
The metadata_version
corresponds to a major or minor release of Tanzu Operations Manager. Tanzu Operations Manager can accept a tile with a metadata_version
that is older than the Tanzu Operations Manager version, but not a tile with a metadata_version
that is newer than the Tanzu Operations Manager version. A best practice is to set the metadata_version
to be the same as the oldest version of Tanzu Operations Manager that the tile version supports.
The label that is used in the tile when it appears in the Tanzu Operations Manager Dashboard.
A description of the tile.
The order in which a tile appears on the dashboard. The BOSH Director always appears at rank 100.
For your tile to appear to the right of BOSH Director, you must set this value to an integer less than 100.
If all tiles have the same rank
, Tanzu Operations Manager sorts them alphabetically.
This regular expression allows the Tanzu Operations Manager / Broadcom Support portal integration to pull a specific tile file. You must do this when there are multiple tiles with the same product slug.
false
Set service_broker
to true
for on-demand service brokers. This has the following results:
Activates the service network selector property type.
Requires you to select a service network during tile configuration. You can reference the selected service network with (( $self.service_network ))
.
Includes a UAA client for the service to use. Tile authors can reference the UAA client credentials with (( $self.uaa_client_name ))
and (( $self.uaa_client_secret ))
.
false
Set bosh_read_creds
to true
for tiles that need read-only access to the BOSH director. Tile authors can reference these read-only UAA client credentials with (( $self.bosh_read_creds_name ))
and (( $self.bosh_read_creds_secret ))
.
This feature increases security by automatically using the latest patched version of a stemcell. Note that, with this feature enabled, you might experience longer than expected upgrade times.
With the enable_patch_security_updates
property, you can automatically use the latest patched version of a stemcell. This key is set to true
by default. For tiles using static compilations, you can deactivate this feature.
For example:
stemcell_criteria
os: ubuntu-xenial
version: "97.0"
enable_patch_security_updates: false
You must set the enable_patch_security_updates
property to true
. If you set the property to false
, your tile does not receive security patches through automatic stemcell updates.
Do not specify which IaaS the stemcell targets. This keeps your product template IaaS-agnostic so that one product template can be deployed on any IaaS.
For a list of stemcells, including OS and version, see the BOSH website.
For more information, see Floating Stemcells.
Stemcell criteria can be selected using the stemcell_selector
property type. These stemcells are listed, in addition to the configured stemcell, with stemcell_criteria
. After you select a stemcell, it becomes required.
For more information about the stemcell_selector
property type, see stemcell_selector.
For example:
additional_stemcells_criteria:
- os: ubuntu-xenial
version: 97.0
enable_patch_security_updates: false
- os: windows2016
version: 1709.1
A list of tile dependencies. If the required tile is not present in the Tanzu Operations Manager installation, Tanzu Operations Manager lists the required dependencies and does not install your tile until the dependencies are satisfied.
Supported restriction operators are =
, !=
, >
, <
, >=
, <=
, and ~>
.
The following keys are supported:
name
: The name of the tile required by your tile. This is a required key.version
: The version range required by your tile. This is a required key.optional
: This is an optional key that defaults to false.For example:
requires_product_versions:
- name: tile-one
version: '> 1.2'
- name: tile-two
version: '~> 2.3.4'
optional: true
For more information about required and optional dependencies, see Dependencies in How Tiles Work.
The list of releases contained in your tile’s releases directory.
The version of the release must be exactly the same as the version contained in the release.
Each release requires the following keys:
name
file
version
A list of variables that are generated after a deploy succeeds.
You can reference variables in a manifest snippet using triple-parentheses expressions.
Each release requires the following keys:
name
type
A list of errands that run after a deploy succeeds.
Set the run_post_deploy_errand_default:
property to on
or off
to set the default for the errand’s run rule selector in Tanzu Operations Manager. If you do not specify this property, the selector defaults to On
.
For more information, see Errands.
A list of errands that run before a deployment is deleted.
Set the run_pre_delete_errand_default:
property to on
or off
to set the default for the errand’s run rule selector in Tanzu Operations Manager. If you do not specify this property, the selector defaults to On
.
For more information, see Errands.
These are keys that define global deployment configurations. For more information, see Managing Runtime Configs.
Install-time verifiers confirm that properties for external services are set correctly. Install-time verifiers run in Tanzu Operations Manager before the changes are applied. You can correct invalid properties before you deploy.
For example, Verifiers::MysqlDatabaseVerifier
checks that MySQL database properties are valid by using the properties to connect to the MySQL database. If the properties are invalid, the install-time verifier provides a message.
Each install_time_verifier
supports the following keys:
name
: The type of verifier. The value must be one of the verifiers listed in the following table.
properties
: A mapping of verifier inputs to either property references or static values. The required properties for each verifier are listed in the following table.
ignorable
: If this key is set to false
, you cannot click Apply Changes until the verification errors are resolved. If this key is set to true
, you can ignore the warning message and click Apply Changes. This key is set to false
by default.
run_on
: Determines when to run the verifier. Valid values include 'always'
and 'major_or_minor_upgrades'
. This key defaults to 'always'
.
For information about how you can manage and view verifiers, see Managing Tanzu Operations Manager Verifiers.
The following table lists the available install-time verifiers:
Verifier Type | Verifies that... | Properties |
---|---|---|
Verifiers::BlobstoreVerifier |
the specified AWS s3 bucket exists and is accessible. |
|
Verifiers::LDAPBindVerifier |
the specified LDAP server exists and that the provided credentials are valid. Multiple LDAP servers may be verified if the url property is a space-separated list of server URLs. |
|
Verifiers::MysqlDatabaseVerifier |
the specified MySQL server exists and that the provided credentials and database are valid. |
|
Verifiers::SmtpAuthenticationVerifier |
the specified SMTP server exists and that the provided credentials are valid. |
|
Verifiers::SsoUrlVerifier |
the specified SSO server exists. |
|
Verifiers::StaticIpsVerifier |
all requested static IPs fall within the subnet assigned to the job. For more information, see static_ips in Job Types. |
(none) |
Verifiers::WildcardDomainVerifier |
the specified domain resolves using DNS. |
|
Verifiers::VsphereConfigurationVerifier |
the vSphere configuration is valid. When vcenter_ca_certificate is provided, the vCenter server certificate is validated against the provided CA or certificate chain.vcenter_ca_certificate was introduced in metadata version 3.0.2 |
|
Verifiers::HttpSuccessVerifier |
the specified endpoint returns successfully. If must_match_regex expression is provided, it must be wrapped in forward slashes. For example, /.*/ . The verifier ensures that the response body matches the regular expression. |
|
The following is an example of a install_time_verifiers
section:
install_time_verifiers:
- ignorable: true
name: Verifiers::WildcardDomainVerifier
properties:
domain: .cloud_controller.system_domain
- name: Verifiers::SsoUrlVerifier
properties:
url: .properties.uaa.saml.sso_url
- ignorable: true
name: Verifiers::BlobstoreVerifier
properties:
access_key_id: .properties.system_blobstore.external.access_key
bucket_name: .properties.system_blobstore.external.buildpacks_bucket
endpoint: .properties.system_blobstore.external.endpoint # Optional. Defaults to AWS
region: .properties.system_blobstore.external.region # Optional. Defaults to default IaaS setting
secret_access_key: .properties.system_blobstore.external.secret_key
signature_version: .properties.system_blobstore.external.signature_version
use_path_style: .properties.system_blobstore.external.use_path_style # Optional. Defaults to false
- ignorable: true
name: Verifiers::MysqlDatabaseVerifier
properties:
database: "static-database-name"
host: .properties.system_database.external.host
password: .properties.system_database.external.account_password
port: 1234
user name: example-dbuser
- ignorable: true
name: Verifiers::HttpSuccessVerifier
run_on: major_or_minor_upgrades
properties:
host: .properties.external_host
scheme: https
port: 443
path: /verify
This is the icon that appears on the tile in the Tanzu Operations Manager Installation Dashboard.
A publicly available URL that is passed to BOSH to download your releases during installation. If you use this text box, BOSH Director must have internet connectivity. This allows you to package your tile without releases, decreasing the tile size.
false
Set opsmanager_syslog
to true
to opt in to the Tanzu Operations Manager provided syslog form. If you opt in, you do not need provide the Syslog BOSH release for your tile.
For more information about the Syslog BOSH release, see the Syslog BOSH Release repository on GitHub.
For more information about migrating an existing form to the syslog form provided, see Migrating existing Syslog configuration to Tanzu Operations Manager.
Each form type you write is composed of form properties. Form properties dictate the structure of the form fields that appear in the Tanzu Operations Manager UI. The names (name
)of the forms appear on the left-hand side as navigational tabs.
Form properties reference property_blueprints
. Property blueprints define each text box’s data type.
For an example property blueprint that corresponds to the form_types
example that follows, see property_blueprints.
form_types:
- name: example-form
label: Configurable Properties
description: All the properties that you can configure!
markdown: |
## I am markdown, hear me _roar_.
Things to do:
1. Learn [markdown](https://daringfireball.net/projects/markdown/).
1. ...
1. Profit!
property_inputs:
- reference: .web_server.example_string
label: Example string
description: 'Configure a property of type string'
- reference: .web_server.example_string_with_placeholder
label: Example string containing Placeholder text
description: 'Optional text box. Configuration not necessary'
placeholder: 'Ghost text. Spooky!'
- reference: .web_server.example_migrated_integer
label: Example integer
description: 'Configure a property of type integer'
- reference: .web_server.example_boolean
label: Example boolean
description: 'Configure a property of type boolean'
- reference: .web_server.example_dropdown
label: Example dropdown
description: 'Configure a property of type dropdown'
- reference: .web_server.example_domain
label: Example domain
description: 'Configure a property of type domain'
- reference: .web_server.example_wildcard_domain
label: Example wildcard_domain
description: 'Configure a property of type wildcard_domain'
- reference: .web_server.example_string_list
label: Example string_list
description: 'Configure a property of type string_list'
- reference: .web_server.example_text
label: Example text
description: 'Configure a property of type text (setting to "magic value" causes the web server job instance count to go to 0)'
- reference: .web_server.example_ldap_url
label: Example ldap_url
description: 'Configure a property of type ldap_url'
- reference: .web_server.example_email
label: Example email
description: 'Configure a property of type email'
- reference: .web_server.example_http_url
label: Example http_url
description: 'Configure a property of type http_url'
- reference: .web_server.example_ip_address
label: Example ip_address
description: 'Configure a property of type ip_address'
- reference: .web_server.example_ip_ranges
label: Example ip_ranges
description: 'Configure a property of type ip_ranges'
- reference: .web_server.example_multi_select_options
label: Example multi_select_options
description: 'Configure a property of type multi_select_options'
- reference: .web_server.example_network_address_list
label: Example network_address_list
description: 'Configure a property of type network_address_list (this property was marked with freeze_on_deploy, and so cannot be edited after changes are first applied)'
- reference: .web_server.example_network_address
label: Example network_address
description: 'Configure a property of type network_address'
- reference: .web_server.example_port
label: Example port
description: 'Configure a property of type port'
- reference: .web_server.example_smtp_authentication
label: Example smtp_authentication
description: 'Configure a property of type smtp_authentication'
- reference: .web_server.client_certificate
label: Example certificate
description: 'Configure a certificate'
verifiers:
- name: Verifiers::WildcardDomainVerifier
properties:
domain: .web_server.example_wildcard_domain
- name: Verifiers::StaticIpsVerifier
properties:
domain: .web_server.example_ip_address
The internal name of the form.
The label of the form. Appears as a link on the left hand side of each form.
The description of the form. Appears at the top of the form as a header.
Provide a block of markdown to display at the top of the form. Use this property to document the tile and provide explanations or references. External images are not supported.
References to properties defined in the property_blueprints
section of the product template.
Verifiers confirm that properties are set correctly in forms. If a verifier displays a warning, the form can still be saved and the warning can be ignored.
Verifiers are similar to install-time verifiers except that they run after a form is saved and not before you click Apply Changes. Verifiers do not block deployments and only inform you that the properties you set are invalid.
To have a verifier run when a form is saved and before you click Apply Changes, add the verifier to both the verifiers
and install_time_verifiers
sections.
For information about:
how you can manage and view verifiers, see Managing Tanzu Operations Manager Verifiers.
how verifiers are configured, see install_time_verifiers.
The following is an example verifiers
section:
form_types:
- name: example-form
label: Configurable Properties
description: All the properties that you can configure!
property_inputs:
- reference: .web_server.example_wildcard_domain
label: Example wildcard_domain
description: 'Configure a property of type wildcard_domain'
- reference: .web_server.static_ips
label: Example ip_address
description: 'Configure a property of type ip_address'
verifiers:
- name: Verifiers::WildcardDomainVerifier
properties:
domain: .web_server.example_wildcard_domain
- name: Verifiers::StaticIpsVerifier
- name: Verifiers::MysqlDatabaseVerifier
properties:
database: "static-database-name"
host: .properties.example-database-host
port: 1234
user name: example-dbuser
You can specify either a tile property reference or a static value for a form verifier. In the preceding example, Verifiers::MysqlDatabaseVerifier
uses a tile property reference for the database host and static values for the database name, port number, and user name.
Specify placeholder text for a text box. Appears in light gray to show an example value for the user. The text disappears when you type in the text box and reappears if the text box is empty.
The placeholder
attribute displays for the following form types:
string
integer
domain
wildcard_domain
string_list
text
ldap_url
email
http_url
ip_address
ip_ranges
network_address_list
network_address
port
The following is an example of the job_types
section that appears in a product template.
This section defines the jobs that end up in a BOSH manifest. Those jobs are defined in your BOSH release.
Jobs require many different settings to function properly. That is the core of what Tanzu Operations Manager does for you: Tanzu Operations Manager asks you to designate values for those settings and generates a manifest based on what you specify.
Tanzu Operations Manager does not require tile authors to provide vm_credentials
in the property_blueprints
for each job_type
. This is because vm_credentials
are generated automatically. You can find them in the release manifest.
Important Tanzu Operations Manager ignores static_ip
and dynamic_ip
keys. To configure the static IPs of a job_type
, create a property blueprint with name: static_ips
and type: ip_ranges
.static_ips
is a special keyword that Tanzu Operations Manager uses to find static IPs and pass them to the BOSH manifest. For more information about ip_ranges
, see ip_ranges.
job_types:
- name: web_server
resource_label: Web Server
templates:
- name: web_server
release: example-release
- name: time_logger
release: example-release
release: example-release
static_ip: 1
dynamic_ip: 0
single_az_only: true
use_stemcell: ubuntu-xenial
max_in_flight: 1
resource_definitions:
- name: ram
type: integer
configurable: true
default: 1024
- name: ephemeral_disk
type: integer
configurable: true
default: 2048
- name: persistent_disk
type: integer
configurable: true
default: 1024
constraints:
min: 1024
- name: cpu
type: integer
configurable: true
default: 1
instance_definition:
name: instances
type: integer
configurable: true
default: 1
constraints:
max: 1
zero_if:
property_reference: '.web_server.example_text'
property_value: 'magic value'
allow_manual_selection_of_zero: false
manifest: |
generated:
root_rsa_certificate: (( $ops_manager.ca_certificate ))
rsa_cert_credentials:
public_key_pem: (( generated_rsa_cert_credentials.public_key_pem ))
cert_and_private_key_pems: (( generated_rsa_cert_credentials.cert_and_private_key_pems ))
rsa_pkey_credentials:
public_key_pem: (( generated_rsa_pkey_credentials.public_key_pem ))
private_key_pem: (( generated_rsa_pkey_credentials.private_key_pem ))
public_key_openssh: (( generated_rsa_pkey_credentials.public_key_openssh ))
public_key_fingerprint: (( generated_rsa_pkey_credentials.public_key_fingerprint ))
salted_credentials:
sha512_hashed_password: (( generated_salted_credentials.sha512_hashed_password ))
identity: (( generated_salted_credentials.identity ))
salt: (( generated_salted_credentials.salt ))
password: (( generated_salted_credentials.password ))
simple_credentials:
identity: (( generated_simple_credentials.identity ))
password: (( generated_simple_credentials.password ))
secret: (( generated_secret.value ))
uuid: (( generated_uuid.value ))
configured:
string: (( example_string.value ))
integer: (( example_migrated_integer.value ))
...
record_collection: (( .properties.example_collection.value || [] ))
selector: (( .properties.example_selector.selected_option.parsed_manifest(my_snippet) ))
ops_manager_provided_accessors:
name: (( name ))
cpu: (( cpu ))
ram: (( ram ))
ephemeral_disk: (( ephemeral_disk ))
persistent_disk: (( persistent_disk ))
instances: (( instances ))
any_instances: (( any_instances ))
subnet_cidrs: (( subnet_cidrs ))
property_blueprints:
- name: static_ips
type: ip_ranges
configurable: true
optional: true
- name: generated_rsa_cert_credentials
type: rsa_cert_credentials
- name: generated_rsa_pkey_credentials
type: rsa_pkey_credentials
- name: generated_salted_credentials
type: salted_credentials
- name: generated_simple_credentials
type: simple_credentials
- name: generated_secret
type: secret
- name: generated_uuid
type: uuid
- name: example_string_with_placeholder
type: string
configurable: true
optional: true
placeholder: 'Configure me!'
- name: example_string
type: string
configurable: true
default: 'Hello world'
constraints:
- must_match_regex: '^[^!@#$%^&*()]*$'
error_message: 'This name cannot contain capital digits.'
- must_match_regex: '^[^0-9]*$'
error_message: 'This name cannot contain digits.'
- name: example_migrated_integer
type: integer
configurable: true
default: 1
- name: example_boolean
type: boolean
configurable: true
default: true
- name: example_dropdown
type: dropdown_select
configurable: true
default: kiwi
options:
- name: kiwi
label: 'label for kiwi'
- name: lime
label: 'label for lime'
- name: avocado
label: 'label for avocado'
- name: example_domain
type: domain
configurable: true
default: www.example.com
- name: example_wildcard_domain
type: wildcard_domain
configurable: true
default: 'example.com'
- name: example_string_list
type: string_list
configurable: true
default: 'a,list,of,strings'
- name: example_text
type: text
configurable: true
default: 'some_text'
- name: example_ldap_url
type: ldap_url
configurable: true
default: 'ldap://example.com'
- name: example_email
type: email
configurable: true
default: [email protected]
- name: example_http_url
type: http_url
configurable: true
default: 'http://www.example.com'
- name: example_ip_address
type: ip_address
configurable: true
default: '192.168.0.1'
- name: example_ip_ranges
type: ip_ranges
configurable: true
default: '1.1.1.1-1.1.1.4,2.2.2.1-2.2.2.4'
- name: example_multi_select_options
type: multi_select_options
configurable: true
default: ['earth', 'jupiter']
options:
- name: mercury
label: 'label for mercury'
- name: venus
label: 'label for venus'
- name: earth
label: 'label for earth'
- name: mars
label: 'label for mars'
- name: jupiter
label: 'label for jupiter'
- name: saturn
label: 'label for saturn'
- name: uranus
label: 'label for uranus'
- name: neptune
label: 'label for neptune'
- name: example_network_address_list
type: network_address_list
configurable: true
default: '1.1.1.1,example.com,foo.bar.example.com'
- name: example_network_address
type: network_address
configurable: true
default: '1.1.1.1'
- name: example_port
type: port
configurable: true
default: 1111
- name: example_smtp_authentication
type: smtp_authentication
configurable: true
default: plain
- name: client_certificate
type: ca_certificate
configurable: true
optional: true
The name of the job as it is to be created in the BOSH manifest generated by Tanzu Operations Manager.
The label of the job as it is to appear in the resources page of the tile.
Each element has the following attributes:
name
Each element has the following text boxes:
name
release
consumes
provides
For more information about BOSH links, see the BOSH documentation.
The name of the BOSH release contained in your tile archive, which is the .pivotal
file.
You can give control of balancing jobs across availability zones (AZs) by setting single_az_only
to false
.
To limit a job to a single AZ, set single_az_only
to true
.
Caution If you change the single_az_only
setting, your VMs can switch AZs. This change can cause an orphaned disk.
This is a BOSH setting that controls the number of instances of this job that BOSH deploys in parallel.
The stemcell operating system for this job. You must set use_stemcell
to the value of an os
key configured in stemcell_criteria
or additional_stemcell_criteria
.
You can configure use_stemcell
to activate jobs to run on different operating systems. For example, you can configure one job to run on Linux and a different job to run on Windows. If the instance count of a job is 0
, the configured stemcell operating system is not required to deploy the tile.
If a job does not have a use_stemcell
property, the job uses the stemcell operating system configured in stemcell_criteria
. For more information, see stemcell_criteria and additional_stemcell_criteria.
A set of resource settings for the job with maximum and minimum constraints, defaults, and configuration options.
The resources you can set are:
ram
ephemeral_disk
persistent_disk
cpu
For examples of supported constraint types, see integer.
Important If you set the default
property for persistent_disk
to 0
, users cannot edit this value and the Resource Config pane in the Tanzu Operations Manager tile displays None under the persistent disk text box.
The number of default instances for a job, including maximum, minimum, odd, and the ability to decrease sizing after deploy.
If your tile uses an external service that performs the same job as a service in TAS for VMs, you can reduce resource usage by setting the instance count of a job to 0
with the zero_if
property.
When zero_if
is not active for an instance group, you cannot set the instance count to 0 (zero). You can override this by setting allow_manual_selection_of_zero
to true
. By default, it is set to false
.
For example, assume that your tile uses Amazon Relational Database Service (RDS) instead of MySQL, which is the default system database for TAS for VMs. You can remove all instance counts of MySQL by setting property reference
to .properties.system.database
and property value
to magic value
.
For examples of supported constraint types, see integer.
Important If you are using the zero_if
property, you must ensure that the can_only_increase
constraint is set to false
.
|
Tanzu Operations Manager generates a BOSH manifest that defines properties for each job the manifest deploys. Some of these properties are not set until you click Apply Changes, because you configured them in the tile or because Tanzu Operations Manager had to generate them.
For more information about referencing these properties, see Referencing Properties.
The following table that describes the double parentheses expressions Tanzu Operations Manager provides to access information about the jobs that the manifest deploys:
Double Parentheses Expression | Description |
---|---|
(( name )) |
The name of the job |
(( cpu )) |
The CPU of the VM type configured for the job |
(( ram )) |
The RAM of the VM type configured for the job |
(( ephemeral_disk )) |
The ephemeral disk of the VM type configured for the job |
(( persistent_disk )) |
The persistent disk of the VM type configured for the job |
(( instances )) |
The number of instances configured for the job |
(( any_instances )) |
Returns true if there is a non-zero number of instances for the job |
(( subnet_cidrs )) |
A list of CIDRs associated with the job |
All property blueprints can have the following attributes:
name
: Required. The name of the property.
The name is used to reference a property in form_types
and in double parens (( ))
accessors.
type
: Required. The type of property.
The value must be one of the property types listed in this topic.
optional
: Optional. Default: false
.
When set to true
, Tanzu Operations Manager does not require this property to be set to deploy, nor does it validate that this field has a value when saving a form with this property. optional
cannot be set to true
if a default
value is set. For more information about which types support default
, see All Property Blueprint Types. optional
cannot be set to true
if the property also has configurable: false
.
configurable
: Optional. Default: false
.
When set to true
for property types that support your configuration, you are not allowed to configure this value. Do not set configurable: true
for property types that do not support your configuration.
When set to false
, Tanzu Operations Manager does not render this property in any form, even if it is specified in a form_type
, nor does it allow the property to be updated through the API. For property types that support auto-generation of values, when configurable
is set to false
, Tanzu Operations Manager generates and saves a value for this property when the tile this property belongs to is deployed for the first time.
freeze_on_deploy
: Optional. Default: false
.
When set to true
, Tanzu Operations Manager does not allow this property to be changed after the tile this property belongs to is successfully deployed.
conditional_default
: Optional.
Accepts two nested keys: dependency_present
and value
.
The conditional_default
key overrides the default value specified in the property blueprint only when that tile dependency is present. Otherwise, the default value is used.
The conditional_default
key is evaluated when the specified tile dependency is imported. It is re-evaluated only when that tile dependency is staged or deleted. For example:
- name: example_selector
type: selector
default: Yes
conditional_default:
dependency_present: cf
value: No
option_templates:
- name: yes_option
select_value: Yes
named_manifests:
- name: my_snippet
manifest: |
...
- name: no_option
select_value: No
named_manifests:
- name: my_other_snippet
manifest: |
...
When a property has configurable: true
and is added to a form_type
, you can configure the value of that property.
Alternatively, a property with configurable: false
gets a value auto-generated by Tanzu Operations Manager. For the property types supported by each of these, see the sections that follow.
Properties with configurable
set to false
:
form_types
.Specify a property for collection in the named_manifest
section of the metadata. For example:
- name: certificate_collection
type: collection
configurable: true
property_blueprints:
- name: some_cert_name
type: string
- name: some_cert
type: rsa_cert_credentials
named_manifests:
- name: for_routing
manifest: |
name: (( current_record.some_cert_name.value ))
private_key: (( current_record.some_cert.private_key_pem ))
public_key: (( current_record.some_cert.public_key_pem ))
certificate: (( current_record.some_cert.cert_pem ))
Use the current_record
property within a collection record to refer to other properties in the same record.
For example, the properties in the for_routing
named manifest refer to the values for name
, private_key
, public_key
, and certificate
in this record only.
Note If you are using the The current_record
property is reserved. You cannot create a new property named current_record
.
After you define a named manifest, you can reference it using a manifest snippet in the following format:
routing_certificates: (( .properties.certificate_collection.parsed_manifest(for_routing) ))
Tanzu Operations Manager renders the following manifest from this example:
routing_certificates:
- name: foo_cert
private_key: PRIVATE-KEY
public_key: PUBLIC-KEY
certificate: CERTIFICATE
- name: bar_cert
private_key: PRIVATE-KEY
public_key: PUBLIC-KEY
certificate: CERTIFICATE
For more information, see Selector and Collection Types.
These sections describe every property blueprint type.
This holds a single boolean value.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns the boolean value of the property. |
value_present? | Returns true only if the value of the property is set. |
property_blueprints:
- name: example_boolean
type: boolean
configurable: true
default: false
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_boolean
label: 'Example checkbox'
description: 'This is an example check box'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: user_add
release: os-conf
manifest: |
persistent_homes: (( .properties.example_boolean.value ))
This holds a string value.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns a string or null. |
value_present? | Returns true only if the value of the property is set. |
property_blueprints:
- name: ca_cert
type: ca_certificate
configurable: true
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.ca_cert
label: 'Trusted CA certs'
description: 'These certificates will be trusted by the deployed VM'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: ca_certs
release: os-conf
manifest: |
certs: (( .properties.ca_cert.value ))
This holds multiple records of a group of custom defined properties.
You cannot nest selector properties or other collection properties inside of a collection.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . If specified, the default value must be an array; each item of the array has the keys and values that are appropriate for the property blueprints provided. For the example below, a default value can be: default: - name: sam public_key: ssh-rsa AAAAB3NzaC1yc2EAAAAD... sudo: true |
property_blueprints | A group of property blueprints that each record has. Any type and combination of property types can be used except collections and selectors, which cannot be nested inside of collections. |
named_manifests | An array of objects, each containing a name and a manifest . The manifest specifies the YAML code that can be used with parsed_manifest(name) where the manifest will be interpolated for each record in the collection. The manifest has a special property level, current_record , which has all the properties in a record of the collection. The example provided below shows have named_manifest , current_record , and parsed_manifest together to render a collection in a BOSH manifest. |
Logical Keys for GitOps style workflows | Tanzu Operations Manager assigns each element of a collection a GUID. The GUID is used to track the element life cycle: adding, changing, and deleting an element. The collection element GUIDs differ between Tanzu Operations Manager environments, so you cannot create a common configuration for different environments. To address this issue, newer versions of the Tanzu Operations Manager CLI use collection element fields as logical keys. The Tanzu Operations Manager CLI uses the following text boxes in collection elements as logical keys:
You must include a logical key and set freeze_on_deploy: true in each collection in which you want to target “update” and “delete and add” operations separately. |
parsed_manifest(named) | An array of interpolated YAML elements (often objects, but can be strings or numbers); each element of the array is an interpolation of the named_manifest for each record. |
value | An array of objects whose keys are the property names specified under property_blueprints , and whose values are the .value for each property. For example, if a collection “albums” had properties: title (string) and explicit (boolean), (( albums.value )) would render: [ {title: 'album-one', explicit: true}, {title: 'album-two', explicit: false} ] |
.value
accessorproperty_blueprints:
- name: users_to_add
type: collection
configurable: true
property_blueprints:
- name: name
type: string
configurable: true
freeze_on_deploy: true
- name: public_key
type: string
configurable: true
- name: sudo
type: boolean
configurable: true
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.users_to_add
label: 'Users to add'
description: 'will added to deployed VM'
property_inputs:
- reference: name
label: Username
description: user name of the added user
- reference: public_key
label: Public key
description: RSA public key used to SSH onto the VM
- reference: sudo
label: make sudoer
description: if selected, user will be able to sudo
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: user_add
release: os-conf
manifest: |
users: ((.properties.users_to_add.value))
...
instance_groups:
- name: example-job
jobs:
- name: user_add
release: os-conf
...
properties:
users:
- name: tom
public_key: ssh-rsa MFwwDQYJKoZIhvcNAQEBBQ...
sudo: false
- name: sameer
public_key: ssh-rsa MFwwDQYJKoZIhvcNAQEBBQ...
sudo: true
...
.parsed_manifest(name)
property_blueprints:
- name: sysctls
type: collection
configurable: true
property_blueprints:
- name: setting_name
type: string
configurable: true
freeze_on_deploy: true
- name: setting_value
type: string
configurable: true
named_manifests:
- name: name_value_format
manifest: (( current_record.setting_name.value ))=(( current_record.setting_value.value ))
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.sysctls
label: 'Custom sysctls'
description: 'sysctl configuration settings to be placed in /etc/sysctl.d'
property_inputs:
- reference: setting_name
label: Setting name
description: the sysctl setting name, e.g. net.core.somaxconn
- reference: setting_value
label: Setting value
description: value for this sysctl setting
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: sysctl
release: os-conf
manifest: |
sysctl: (( .properties.sysctls.parsed_manifest(name_value_format) ))
...
instance_groups:
- name: example-job
jobs:
- name: sysctl
release: os-conf
...
properties:
sysctl:
- foo=bar
- fooz=baz
...
This holds a single string value selected from allowed disk types.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
resource_definitions | Optional. An array of objects with the same schema as resource_definitions for job_types . For disk_type_dropdown , resource_definitions can only have one element with name “persistent_disk”. This element can also specify a default that Tanzu Operations Manager uses as a minimum bound when it selects a default value. It can also specify constraints , which can be any set of constraints that can be specified for an integer property. For examples of supported constraint types, see integer below. |
value | Returns a string containing the size of the selected disk in megabytes; for example, “1024”. If the operator specifies no value or “Automatic”, then this returns the smallest disk that is greater than the default value specified in resource_definitions . If no default was specified, this returns the smallest disk in the catalog. |
value_present? | Returns true only if a disk type is selected. If the user has selected “Automatic”, value_present? will be false . |
property_blueprints:
- name: example_disk_type_dropdown
type: disk_type_dropdown
configurable: true
resource_definitions:
- name: persistent_disk
default: 4096
constraints:
min: 2048
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_disk_type_dropdown
label: 'Example disk_type_dropdown'
description: 'This is an example'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: "Hello user, I see that your favorite disk size greater than 2 Gb is: (( .properties.example_disk_type_dropdown.value ))."
This holds a string value that is a valid domain (e.g. example.com
or x.example.com:80/a/b
).
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, it must be set to a value that is valid for this type. It cannot be used when the property also has optional: true . |
value | Returns the domain as a string or null. |
value_present? | Returns true only if the value is a non-empty string. |
property_blueprints:
- name: example_domain
type: domain
configurable: true
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_domain
label: 'Example domain'
description: 'This is an example'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. I see your favorite domain is (( .properties.example_domain.value )).
This holds an array of strings selected string values.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . The default value can be the name of one of the options. For example, in the example shown below, “tomato” can be used as the default. |
options | An array of hashes, each item specifying a: name , which becomes the value of the property if this option is selected, and label shows up as the text in the drop-down menu for this option. |
value | Returns the name of the selected option. |
value_present? | Returns true if an option in selected, and if that option’s name is a non-empty string. |
property_blueprints:
- name: example_dropdown_select
type: dropdown_select
default: kiwi
configurable: true
options:
- name: kiwi
label: 'Kiwi'
- name: lime
label: 'Lime'
- name: tomato
label: 'Tomato'
form_types:
- name: example_dropdown
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_dropdown_select
label: Favorite fruit
description: 'What is your favorite fruit?'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. I see your favorite fruit is (( .properties.example_dropdown_select.value )).
This ensures that the string value is formatted as an email address.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns a string or null. |
value_present? | Returns true if value is a non-empty string. |
property_blueprints:
- name: example_email
type: email
configurable: true
form_types:
- name: example_dropdown
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_email
label: User email
description: 'What is your email?'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. Your email is (( .properties.example_email.value )).
This holds an HTTP URL.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns a string or null. |
value_present? | Returns true if value is a non-empty string. |
property_blueprints:
- name: example_http_url
type: http_url
configurable: true
default: 'http://example.com'
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_http_url
label: Example http_url
description: 'Configure a property of type http_url'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. For fun, please visit (( .properties.example_http_url.value )).
This holds a single integer value.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
constraints | Constrains which integer values are considered valid. See the table for all supported constraint types. |
max | Sets the maximum value of the integer |
may_only_be_odd_or_zero | Sets the integer to only allow odd or zero values |
may_only_increase | Sets the integer to only increase in value |
min | Sets the minimum value of the integer |
modulo | Sets the integer to only be divisable by the given value |
power_of_two | Sets the integer to only be a power of two |
zero_or_min | Sets the minimum value of the integer, but allows zero |
value | Returns an integer or null. |
value_present? | Returns true if value is an integer. |
property_blueprints:
- name: example_integer1
type: integer
configurable: true
default: 9
constraints: # the following constraints allow the values 9, 15, and 21
min: 8
max: 21
may_only_increase: true
may_only_be_odd_or_zero: true
modulo: 3
- name: example_integer2 # the following constraints allow the values 8 and 16
type: integer
configurable: true
optional: true
constraints:
zero_or_min: 5
max: 20
power_of_two: true
form_types:
- name: example_integer
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_integer1
label: Example Integer 1
description: 'Configure a property of type integer'
- reference: .properties.example_integer2
label: Example Integer 2
description: 'Configure another property of type integer'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: tcp_keepalive
release: os-conf
manifest: |
tcp_keepalive:
time: (( .properties.example_integer1.value ))
interval: (( .properties.example_integer2.value ))
Ensures that the string value is an IP address.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns a string or null |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_ip_address
type: ip_address
configurable: true
default: 192.168.0.1
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_ip_address
label: Example IP Address
description: 'Configure a property of type ip_address'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. I see your favorite IP Address is (( .properties.example_ip_address.value )).
This holds a string that is a comma-separated list of IP addresses and IP address ranges.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
parsed_ip_ranges | Returns an array of strings containing each IP range |
value | Returns a string containing a comma-separated list of IP ranges and IP addresses, or null |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_ip_ranges
type: ip_ranges
configurable: true
default: 1.1.1.1-1.1.1.4,2.2.2.1-2.2.2.4,3.3.3.3
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_ip_ranges
label: Example IP Ranges
description: 'Configure a property of type ip_ranges'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. I see your favorite IP ranges are (( .properties.example_ip_ranges.value )).
Ensures that the input string matches a URL of the LDAP protocol or a space-separated list of LDAP protocol URLs.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns a string or null. |
value_present? | Returns true if value is a non-empty string. |
property_blueprints:
- name: example_ldap_url
type: ldap_url
configurable: true
default: 'ldap://example.com'
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_ldap_url
label: Example ldap_url
description: 'Configure a property of type ldap_url'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. I see your favorite LDAP URL is (( .properties.example_ldap_url.value )).
This holds an array of selected string values. Must be an array of non-blank strings.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns an array of strings for the selected options or null |
value_present? | Returns true if any of the check boxes are selected |
property_blueprints:
- name: example_multi_select_options
type: multi_select_options
configurable: true
default: ['earth', 'mercury']
options:
- name: mercury
label: 'label for mercury'
- name: venus
label: 'label for venus'
- name: earth
label: 'label for earth'
form_types:
- name: example_multi_select_options
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_multi_select_options
label: Example Multi-Select Options
description: 'Configure a property of type multi_select_options'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: modprobe
release: os-conf
manifest: |
# the value at the 'modules' key will render as an array of strings
modules: (( .properties.example_multi_select_options.value ))
This holds a string: a hostname, domain name, or IP addresses.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns a string or null |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_network_address
type: network_address
configurable: true
default: 'localhost'
form_types:
- name: example_network_address
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_network_address
label: Example Network Address
description: 'Configure a property of type network_address'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. I see your favorite network address is (( .properties.example_network_address.value )).
This holds a string that is a comma-separated list of hostnames and IP addresses.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
parsed_network_addresses | Returns the list of host names and IP addresses as an array of strings |
value | Returns a string which is a comma-separated list of host names and IP addresses or null |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_network_address_list
type: network_address_list
configurable: true
default: 'localhost,8.8.8.8'
form_types:
- name: example_network_address_list
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_network_address_list
label: Example Network Address List
description: 'Configure a property of type network_address_list'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. I see your favorite network addresses are (( .properties.example_network_address_list.value )).
an_ignored_array_of_network_addresses: (( .properties.example_network_address_list.parsed_network_addresses ))
This holds a single integer value. Allowed values are 0 (zero) through 65535 and null.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns an integer or null |
value_present? | Returns true if value is not null |
property_blueprints:
- name: example_port
type: port
configurable: true
default: 3000
form_types:
- name: example_port
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_port
label: Example Port
description: 'Configure a property of type port'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, user. I see your favorite network port is (( .properties.example_port.value )).
This holds SSL certificate generated from root CA.
credential | yes |
supports auto-generation | yes |
supports operator configuration | yes |
default | For properties that use configurable: false , the default can specify a list of domain names to use when auto-generating the RSA certificate. The first domain listed is the value of the Common Name text box of the cert. The full list of domains is the value of the Alternative Names text box of the cert. See below for an example.This property does not work with a selector property when configurable: false is set. For more information, see Non-Configurable Certificates are Invalid Within a Selector in the release notes. |
cert_pem | Returns a string |
private_key_pem | Returns a string |
cert_and_private_key_pems | Returns a string |
public_key_pem | Returns a string |
value_present? | Returns true if value is an RSA certificate Returns false if the value is null |
property_blueprints:
# This is configurable by the operator and appears in the form_types section
- name: example_configurable_rsa_cert_credentials
type: rsa_cert_credentials
configurable: true
optional: true
# This is not configurable by the operator and is auto-generated
- name: example_non_configurable_rsa_cert_credentials
type: rsa_cert_credentials
configurable: false
default:
domains:
- 'cell.service.cf.internal'
- '*cell.service.cf.internal'
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_configurable_rsa_cert_credentials
label: Example configurable rsa_cert_credentials
description: 'Configure a property of type rsa_cert_credentials'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: |
Hello, user.
Here is your public_key_pem
(( .properties.example_non_configurable_rsa_cert_credentials.public_key_pem ))
Here is your private_key_pem
(( .properties.example_non_configurable_rsa_cert_credentials.private_key_pem ))
Here is your cert_pem
(( .properties.example_non_configurable_rsa_cert_credentials.cert_pem ))
Here is your cert_and_private_key_pems
(( .properties.example_non_configurable_rsa_cert_credentials.cert_and_private_key_pems ))
This holds RSA public and private keys. It is a non-configurable property.
credential | yes |
supports auto-generation | yes |
supports operator configuration | no |
public_key_pem | Returns a string |
private_key_pem | Returns a string |
public_key_fingerprint | Returns a string |
public_key_openssh | Returns a string |
value_present? | Returns true if value of the pkey already exists.\ |
property_blueprints:
- name: example_rsa_pkey_credentials
type: rsa_pkey_credentials
configurable: false
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: user_add
release: os-conf
manifest: |
users:
- name: nick
public_key: ((.properties.example_rsa_pkey_credentials.public_key_pem))
This holds credentials with salted and hashed passwords. It is a non-configurable property.
credential | yes |
supports auto-generation | yes |
supports operator configuration | no |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . If specified, the default value must be an object which is allowed to have the key identity . For example, a default value can be: default: - identity: ryan |
identity | Returns a string |
password | Returns a string |
salt | Returns a string |
sha512_hashed_password | Returns a string |
value_present? | Returns true if value of the credential has already been generated |
property_blueprints:
# Example without defaults
- name: example_salted_credentials
type: salted_credentials
# Example with default identity
- name: example_salted_credentials_with_default
type: salted_credentials
default:
identity: vcap
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: user_add
release: os-conf
manifest: |
users:
- name: vcap
crypted_password: ((.properties.example_salted_credentials.sha512_hashed_password))
This holds a single string value for a secret. Adding display_type: text_area
to the property inputs creates a multi-line credential.
credential | yes |
supports auto-generation | yes |
supports operator configuration | yes |
constraints.must_match_regex | A regular expression that the user input must match. Create a validator that runs on the form Save event. If the user input does not match the must_match_regex constraint, the form displays the specified error_message . Multiple must_match_regex constraints for a single property blueprint are evaluated in the order listed. See below for an example. |
value | Returns the secret as a string or null |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_secret
type: secret
configurable: true
constraints:
- must_match_regex: '^[a-zA-Z]{20,}$'
error_message: 'This password must be at least 20 alphabetic characters '
form_types:
- name: example_secret
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_secret
label: Example Secret
description: 'Configure a property of type secret'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Shh, today's secret is (( .properties.example_secret.value )).
form_types:
- name: example_secret
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_secret
label: Example Secret
description: 'Configure a property of type secret'
display_type: text_area
Provides the ability to switch between groups of properties. It is displayed in the UI as a radio button group, potentially with additional options nested under each radio button.
Selectors are unique in the way that property information is accessed. Tanzu Operations Manager provides accessors available at the top-level selector property, accessors for retrieving a specific property in an option group, and the ability to provide manifest snippets for a selector option group.
Each selector group can provide manifest snippets. This is because Tanzu Operations Manager does not support conditionally adding manifest snippets. A manifest snippet should be present in all option groups, and can be used to create a simple kind of branching logic in manifest generation. Only one of these sets is evaluated and inserted into the job’s manifest.
You cannot nest collection properties or other selector properties inside of a selector.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . If specified, the default value should be one of the values of select_value . |
option_templates | An array of objects that defines the options available. See example below. |
selected_option.parsed_manifest(manifest_snippet_name) | Returns a parsed named manifest snippet for the selected option. Example: .properties.example_selector.selected_option.parsed_manifest(my_snippet) |
SPECIFIC_SELECTOR_OPTION_GROUP.OPTION_GROUP_PROPERTY.value | Scopes the accessor to a specific selector option group. Does not return meaningful information alone. Must be followed with the name and accessor of a specific property in the option group. Example: .properties.example_selector.filet_mignon_option.review.value |
value | Returns the select_value of the selected option. For example, the selector shown in the example below might return “Filet Mignon” as its value. |
property_blueprints:
- name: example_selector
type: selector
configurable: true
default: Pizza
freeze_on_deploy: true
option_templates:
- name: pizza_option
select_value: Pizza
named_manifests:
- name: my_snippet
manifest: |
pizza_toppings:
pepperoni: (( .properties.example_selector.pizza_option.pepperoni.value ))
other: (( .properties.example_selector.pizza_option.other_toppings.value ))
property_blueprints:
- name: pepperoni
type: boolean
configurable: true
freeze_on_deploy: true
- name: other_toppings
type: string
configurable: true
optional: true
- name: filet_mignon_option
select_value: Filet Mignon
named_manifests:
- name: my_snippet
manifest: |
rarity: (( .properties.example_selector.filet_mignon_option.rarity_dropdown.value ))
review: (( .properties.example_selector.filet_mignon_option.review.value ))
property_blueprints:
- name: rarity_dropdown
type: dropdown_select
configurable: true
default: rare
options:
- name: rare
label: 'Rare'
- name: medium
label: 'Medium'
- name: well-done
label: 'Well done'
- name: review
type: string
configurable: true
default: A+ power seller of mail order steak
optional: false
form_types:
- name: example_selector_form
label: 'Selector Example'
description: 'A selector example form'
property_inputs:
- reference: .properties.example_selector
label: 'Food Choices'
selector_property_inputs:
- reference: .properties.example_selector.pizza_option
label: 'Pizza'
property_inputs:
- reference: .properties.example_selector.pizza_option.pepperoni
label: 'Add Pepperoni'
description: 'Yum!'
- reference: .properties.example_selector.pizza_option.other_toppings
label: 'Other toppings'
- reference: .properties.example_selector.filet_mignon_option
label: 'Filet Mignon'
property_inputs:
- reference: .properties.example_selector.filet_mignon_option.rarity_dropdown
label: 'How rare?'
description: 'Extinct.'
- reference: .properties.example_selector.filet_mignon_option.review
label: 'Write your review'
description: '"E.g. Would not buy again"'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: |
Would you like some (( .properties.example_selector.value ))?
I'm asking because you mentioned (( .properties.example_selector.pizza_option.other_toppings.value ))
more_manifest_ignored_by_os_conf: (( .properties.example_selector.selected_option.parsed_manifest(my_snippet) ))
This holds an arrays of string value selected from allowed availability zones (AZs).
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
value | Returns an array of strings for the selected options |
value_present? | Returns true |
service_broker: true
property_blueprints:
- name: service_instance_azs
type: service_network_az_multi_select
configurable: true
optional: false
form_types:
- name: example_service_network_az_multi_select
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.service_instance_azs
label: Example Service Network AZ Multi-Select
description: 'Configure a property of type service_network_az_multi_select'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: "Hello, user. Here is an array of AZ names: (( .properties.service_instance_azs.value ))"
This holds a single string value selected from allowed AZs. It appears as a radio button group in the UI.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
value | Returns a string or null |
value_present? | Returns true if value is a non-empty string |
service_broker: true
property_blueprints:
- name: example_service_network_az_single_select
type: service_network_az_single_select
configurable: true
optional: false
form_types:
- name: example_service_network_az_single_select
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_service_network_az_single_select
label: Example Service Network AZ Single-Select
description: 'Configure a property of type service_network_az_single_select'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: "Hello, user. Here is a single AZ name: (( .properties.example_service_network_az_single_select.value ))"
This holds an identity and password.
credential | yes |
supports auto-generation | yes |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . If specified, the default value must be an object that is allowed to have the key identity . For example, a default value can be: default: - identity: ryan |
identity | Returns a string |
password | Returns a string |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_configurable_simple_credentials
type: simple_credentials
configurable: true
- name: example_non_configurable_simple_credentials
type: simple_credentials
configurable: false
default:
identity: vcap
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_configurable_simple_credentials
label: Example configurable simple_credentials
description: 'Configure a property of type simple_credentials'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: |
Shh, today's secret password is (( .properties.example_non_configurable_simple_credentials.password ))
And the username is (( .properties.example_non_configurable_simple_credentials.identity ))
This holds string with a possible value of plain, login, or cram_md5.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns a string with possible value of plain , login , cram_md5 . |
value_present? | Returns true if value is a non-empty string. |
property_blueprints:
- name: example_smtp_authentication
type: smtp_authentication
configurable: true
default: plain
form_types:
- name: example_text
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_smtp_authentication
label: Example SMTP Authentication
description: 'Configure a property of type smtp_authentication'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello. The SMTP auth type is (( .properties.example_smtp_authentication.value ))
Provides the ability to select among all available stemcell criteria. The stemcell selector is automatically populated with a list of all stemcell operating systems that are listed in the stemcell_criteria
and additional_stemcells_criteria
top-level properties.
After you select a stemcell listed in stemcell_selector
, that stemcell is required to deploy the product.
For more information about the stemcell_criteria
top-level property, see stemcell_criteria.
For more information about the additional_stemcells_criteria
top-level property, see additional_stemcells_criteria.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . If specified, the default value is the operating system of a stemcell criteria. |
os | The operating system of the stemcell that is assigned to the product. This is not always the same as value . If a stemcell is selected but not assigned, this is set to nil . |
version | The version of the stemcell that is assigned to the product. If a stemcell is selected but not assigned, this is set to nil . |
assigned? | Boolean. Returns true if there is an assigned stemcell that matches the selected stemcell |
value | Returns the selected operating system |
value_present? | Returns true if the operator has selected an operating system |
stemcell_criteria:
os: ubuntu-xenial
version: 1.0.0
additional_stemcells_criteria:
- os: windows2019
version: 2019.73
property_blueprints:
- name: example_stemcell_selector
type: stemcell_selector
configurable: true
optional: true
form_types:
- name: example_stemcell_selector_form
label: 'Stemcell Selector Example'
description: 'A stemcell selector example form'
property_inputs:
- reference: .properties.example_stemcell_selector
label: 'Example stemcell selector'
description: 'Select which stemcell you want to use'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: |
Stemcell Assigned?: (( .properties.example_stemcell_selector.assigned? ))
Assigned stemcell OS: (( .properties.example_stemcell_selector.os ))
Assigned stemcell version: (( .properties.example_stemcell_selector.version ))
Selected stemcell?: (( .properties.example_stemcell_selector.value_present? ))
Selected stemcell OS: (( .properties.example_stemcell_selector.value ))
This holds an array of strings.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
parsed_strings | Returns an array of strings for each string entry |
parsed_regex | Returns a string containing a regex of the format ^(string1|string2|string3)$ where the value of this property is string1,string2,string3 |
value | Returns a string or null. |
value_present? | Returns true if value is a non-empty string. |
property_blueprints:
- name: example_string_list
type: string_list
configurable: true
default: foo,bar,baz
form_types:
- name: example_string_list
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_string_list
label: Example String List
description: 'Configure a property of type string_list'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello. Your array of strings is (( .properties.example_string_list.value ))
This holds a single string value.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
constraints.must_match_regex | A regular expression that the user input must match. Create a validator that runs on the form save event. If the user input does not match the must_match_regex constraint, the form displays the specified error_message . Multiple must_match_regex constraints for a single property blueprint are evaluated in the order listed. See the following example. |
constraints.must_be_cron_schedule | Creates a validator that ensures the value of the string satisfies a cron schedule expression. If the user input is not a valid cron schedule expression, the form displays the specified error_message . See the following example. |
value | Returns the string value or null |
value_present? | Returns true only if the value is a non-empty string |
property_blueprints:
- name: example_string
type: string
configurable: true
default: 'Karl'
constraints:
- must_match_regex: 'A[^!@#$%^&*()]*z'
error_message: 'This name cannot contain special characters.'
- must_match_regex: 'A[^0-9]*z'
error_message: 'This name cannot contain digits.'
- must_be_cron_schedule: true
error_message: 'This must be a valid cron schedule expression.'
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_string
label: 'Example string'
description: 'This is an example'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello, (( .properties.example_string.value ))! Welcome.
This holds a string value. For configurable properties of this type, the UI uses multi-line strings to be entered.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
value | Returns a string or null |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_text
type: text
configurable: true
default: |
Example
Text
form_types:
- name: example_text
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_text
label: Example Text
description: 'Configure a property of type text'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: |
Hello. Check out all this text!
(( .properties.example_text.value ))
This holds a string uuid value.
credential | no |
supports auto-generation | yes |
supports operator configuration | no |
value | Returns a string or null |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_uuid
type: uuid
configurable: false
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello. Your UUID is (( .properties.example_uuid.value ))
This holds single string value selected from allowed vm_types.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
resource_definitions | Optional. An array of objects with the same schema as resource_definitions for job_types . For vm_type_dropdown , resource_definitions can have elements with name “ram”, “cpu”, or “ephemeral_disk”. This element can also specify a default that Tanzu Operations Manager uses as a minimum bound when it selects a default value. It can also specify constraints , which can be any set of constraints that can be specified for an integer property. For examples of supported constraint types, see integer. |
value | Returns a string: the name of the selected VM type |
value_present? | Returns true if value is a non-empty string |
property_blueprints:
- name: example_vm_type_dropdown
type: vm_type_dropdown
configurable: true
resource_definitions:
- name: ram
default: 4096
- name: cpu
default: 1
- name: ephemeral_disk
default: 4096
constraints:
min: 2048
form_types:
- name: example_vm_type_dropdown
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_vm_type_dropdown
label: Example VM Type Dropdown
description: 'Configure a property of type vm_type_dropdown'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello. Your chosen VM Type is (( .properties.example_vm_type_dropdown.value )).
Ensures that the string value is a domain prefixed with *.
.
credential | no |
supports auto-generation | no |
supports operator configuration | yes |
default | Optional. Specifies a default value. When provided, must be set to a value that is valid for this type. Cannot be used when the property also has optional: true . |
to_wildcard | Returns a string of the value prefixed with *. if not present |
value | Returns a string or null |
value_present? | Returns true if value is a non-empty string. |
property_blueprints:
- name: example_wildcard_domain
type: wildcard_domain
configurable: true
default: 'example.com'
form_types:
- name: example_form
label: 'Example form'
description: 'An example form'
property_inputs:
- reference: .properties.example_wildcard_domain
label: Example Wildcard Domain
description: 'Configure a property of type wildcard_domain'
job_types:
- name: example-job
resource_label: An Example Job
<<: *job_type_boilerplate
templates:
- name: login_banner
release: os-conf
manifest: |
login_banner:
text: Hello. Your wildcard domain is (( .properties.example_wildcard_domain.value )).
You can copy each example into the metadata.yml
template that follows and package it together with the os-conf
release as a .pivotal
file to make a working tile.
---
name: p-example
label: Example Tile
description: An example tile
product_version: '1.1'
minimum_version_for_upgrade: '1.0'
metadata_version: '2.2'
rank: 1
stemcell_criteria:
os: ubuntu-xenial
version: '97.3'
releases:
- name: os-conf
file: os-conf
version: '15'
# a base 64 encoded PNG with a teal square
icon_image: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12NgaC8BAAGGAPwUz8ygAAAAAElFTkSuQmCC
includes: # This top-level key is ignored by Tanzu Operations Manager.
# This anchor is only to make the examples below more terse and is not required.
job_type_boilerplate: &job_type_boilerplate
max_in_flight: 1
single_az_only: true
resource_definitions:
- name: ram
configurable: true
default: 1024
- name: ephemeral_disk
configurable: true
default: 1024
- name: persistent_disk
configurable: true
default: 1024
constraints:
min: 1024
- name: cpu
configurable: true
default: 1
instance_definition:
name: instances
configurable: true
default: 1