In several deployment scenarios, a component needs the property value of another component to customize itself. You can do this with vRealize Automation by creating property bindings. You can design your Software action scripts for property bindings, but the actual bindings are configured by the architect that assembles the blueprint.

In addition to setting a property to a hard-coded value, a software architect, IaaS architect, or application architect can bind Software component properties to other properties in the blueprint, such as an IP address or an installation location. When you bind a Software property to another property, you can customize a script based on the value of another component property or virtual machine property. For example, a WAR component might need the installation location of the Apache Tomcat server. In your scripts, you can configure the WAR component to set the server_home property value to the Apache Tomcat server install_path property value in your script. As long as the architect who assembles the blueprint binds the server_home property to the Apache Tomcat server install_path property, then the server_home property value is set correctly.

Your action scripts can only use properties that you define in those scripts, and you can only create property bindings with string and array values. Blueprint property arrays are not returned in any specific order, so binding to clusterable or scalable components might not produce the values you expect. For example, your software component requires each of the machine IDs of a cluster of machines, and you allow your users to request a cluster from 1-10, and to scale the deployment from 1-10 machines. If you configure your software property as a string type, you get a single randomly selected machine ID from the cluster. If you configure your software property as an array type, you get an array of all the machine IDs in the cluster, but in no particular order. If your users scale the deployment, the order of values could be different for each operation. To make sure you never lose values for clustered components, you can use the array type for any software properties. However, you must design your software components so they don't expect a value array in any specific order.

See the Examples of String Property Bindings table for examples of a string property value when binding to different types of properties.

Table 1. Examples of String Property Bindings

Sample Property Type

Property Type to Bind

Binding Outcome (A binds to B)

String (property A)

String (property B="Hi")

A="Hi"

String (property A)

Content (property B="http://my.com/content")

A="http://my.com/content"

String (property A)

Array (property B=["1","2"])

A="["1","2"]"

String (property A)

Computed (property B="Hello")

A="Hello"

See the Examples of Array Property Bindings table for examples of an array property value when binding to different types of properties.

Table 2. Examples of Array Property Bindings

Sample Property Type

Property Type to Bind

Binding Outcome (A binds to B)

Array (property A)

String (property B="Hi")

A="Hi"

Array (property A)

Content (property B="http://my.com/content")

A="http://my.com/content"

Array (property A)

Computed (property B="Hello")

A="Hello"

For a detailed explanation of supported property types, see Property Types and Setting Options.