Command Central 10.5 | Template Definition Reference | Reference Template DSL Definition
 
Reference Template DSL Definition
The reference template in this section includes Domain-specific Language (DSL) reference details about how to define a template. Use the reference template to understand the syntax and structure of the composite template definition and to refer to examples.
#
# Composite Template DSL
#
# Convention Description
# REQUIRED The key/value is required
# OPTIONAL The key/value is optional
# IMPLICIT The key/value always exists even when not directly defined
# CONVENTIONAL The key/value is a non-nomenclature convention

alias: reference # REQUIRED A unique alias for the template. Validated, do not use ^\w+[\w\-\.]*$
description: Template DSL # OPTIONAL Description, not valided.
dslVersion: "1.2" # OPTIONAL The version of the composite template DSL. DSL "1.2" is supported in Command Central 10.4 and higher.
version: 0.1 # OPTIONAL The version of the template definition file (based on user-defined versioning of the updates to the
# template definition).
changes: # OPTIONAL List of changes/updates of the template definition file.
- 0.1 Created template definition
- 0.2
- 0.3
- ...



options: # OPTIONAL Modifies how Command Central processes a template during the template application.
abortOnConfigFailure: true # OPTIONAL Default: true (when applying a template for installations 10.4). If set to "true", executing
# the entire template fails when a product configuration cannot be applied.
abortOnLayerStartupFailure: false # OPTIONAL Default: false (when applying a template for installations 10.4). If set to "false", Command
# Central returns a warning when a run-time component does not start and continues processing the template.
forceRestartWhenDone: false # OPTIONAL Default: false. If set to "false", Command Central does not restart the run-time components at the end
# of the template application. Cannot use this parameter for product installations 10.1 or lower.
startupLayers: true # OPTIONAL Default: Default: true. If set to "true", after applying a layer, Command Central starts all run-time
# components created for the layer.

environments: # OPTIONAL Input parameters for this template.
default: # OPTIONAL Global defaults.
# environment.type: default # IMPLICIT The type of the environment, for example "envType1".
param1: defaultValue # OPTIONAL Parameter with a default value, you can refer to ${param1} from anywhere in the template.
param2: ${} # REQUIRED Parameter without a default value. You must provide a value. Fails fast.
param3: # OPTIONAL Parameter without a default value, but you do not have to provide a value. Might fail late.
runtimes.skip.start: <rcId1>,<rcId2> # OPTIONAL. Comma-separated list of run-time components that Command Central will not start when applying
# the template.

actions: # OPTIONAL Actions in the default section are executed as part of any environment.type.
# All actions in the "environments" section are local, which means that the actions are executed on the Command
# Central server host. In addition to that, actions are executed as local if the node on which the actions get
# executed is the local node. All other actions are remote.
defaultAction1: # REQUIRED The name of the action. Fow Windows, the name must end with .bat
description: "default action 1"
phase: post # OPTIONAL Default: post; "pre" actions are executed before any other operation and
# "post" actions are executed after all other operations.
failOnError: true|false # OPTIONAL Default: true; If set to "true", executing the entire template fails if the action fails.
# If set to "false", executing the template continues.
skipOnTemplateError: true|false # OPTIONAL Default: false; If set to "true", does not execute the action if the template application fails.
# If set to "false", executes the action before stopping the template application.
target: POSIX # OPTIONAL Default: POSIX; If "WINDOWS" the action will be executed only on Windows. If "POSIX",
# the action will be executed on "POSIX"-compliant systems. Note that the "target" parameter is used only for
# local actions. All remote actions are executed in a "POSIX" environment.
script: | # REQUIRED (except when you specify "file") The code of the action. The code can use any interpreter available
# on the system, such as Perl, Python, Ruby, and PHP.
#!/bin/sh
touch default_action1
file: /path/to/executable # REQUIRED (except when you specify "script"). If you set both "file" and "script" parameters, "script" is used
# and "file" is ignored. The path can be absolute or relative to the composite template archive.
# If the path is relative, the file is taken from the composite template archive.
envType1: # Parameters used when environment.type=envType1
param1: envTypeDefaultValue1 # Parameter 1 with a default value for this environment.type.
param2: envTypeDefaultValue2 # Parameter 2 with a default value.
param3: envTypeDefaultValue3 # Parameter 3 with a default value.
migration.pre.cleanup: true|false # OPTIONAL. When set to true, Command Central cleans up the migration registry before executing the
# template. When "migration.pre.cleanup" and "migration.post.cleanup" are not set or their value is
# false, Command Central automatically cleans up the migration registry 60 hours after a successful
# template execution.
migration.post.cleanup: true|false # OPTIONAL. When set to true, Command Central cleans up the migration registry after
# executing the template.
actions: # OPTIONAL See the comments for environments/default/actions.

dev: # CONVENTIONAL Development or test environment type with a single node instance.
server: # CONVENTIONAL (Pre)production environment type with single a host/server.
layer: # CONVENTIONAL (Pre)production environment type with multiple hosts/servers, but not in a cluster.
cluster: # CONVENTIONAL (Pre)production environment type with multiple hosts/servers in a cluster.

repositories: # OPTIONAL Repository definition for centralized Comand Central repositories.
product: # OPTIONAL Repositories for installing products.
webMethods-9.8: # REQUIRED MASTER repository with default name "webMethods-<version>" from the closest geographic location.
credentials: ${repo.product.credentials.alias} #The alias of a default or user-defined COMMON-CREDENTIALS configuration instance.
username: me@company.com # REQUIRED DEPRECATED. Use the credentials parameter instead. The Empower username.
password: mypassword # REQUIRED DEPRECATED. Use the credentials parameter instead. The Empower password.
My-9.8-linux: # IMAGE repository name.
location: path/to/product/image/file.zip # REQUIRED The relative path to a product image archive.
fix: # OPTIONAL Repositories for installing fixes.
Empower: # REQUIRED MASTER global fix repository with a default name.
credentials: ${repo.fix.credentials.alias} #The alias of a default or user-defined COMMON-CREDENTIALS configuration instance.
username: me@company.com # REQUIRED DEPRECATED. Use the credentials parameter instead. The Empower username.
password: mypassword # REQUIRED DEPRECATED. Use the credentials parameter instead. The Empower password.
My-9.8-fixes: # IMAGE repository name.
location: path/to/fix/image/file.zip # REQUIRED The relative path to a fix image archive.
asset: # OPTIONAL Repositories for assets.
assets-repo: # REQUIRED The name of the asset repository.
type: # REQUIRED The type of the asset repository. Valid values: flatfile and git.
description: # OPTIONAL Description of the repository.
location: # REQUIRED The location of the flatfile image on the file system or the URL of the git repository.
credentials: ${repo.git.credentials.alias} # REQUIRED For a git repository: the alias of a default or user-defined COMMON-CREDENTIALS
# configuration instance.

nodes: # OPTIONAL The managed Platform Manager nodes.
default: # OPTIONAL Default parameters for all managed nodes.
aliasMapping: # OPTIONAL Specifies the type of policy to use when mapping host names to node aliases.
policy: HOSTNAME|INDEX|EXISTING # OPTIONAL Default: HOSTNAME. "HOSTNAME" maps each layer defined in provision/envType to a list of node
# aliases or hostnames. "EXISTING" uses the details of a Platform Manager node that already exists in Command
# Central and ignores any parameters included in the "nodes" section of the template, except the node alias.
# "INDEX" uses node aliases with a custom prefix and an index number.
prefix: ${node.alias.prefix}# OPTIONAL The custom prefix to use in a node alias when "policy: INDEX". Default: node
delimiter: "_" # OPTIONAL The character to use as delimiter in the indexed node alias, for example "-". Default: "_"
default: # OPTIONAL Default parameters for ANY <nodeAlias> that does not have an explicit definition.
# host: nodeAlias # IMPLICIT Mapping <nodeAlias> to a hostname for this node.
actions: # OPTIONAL (executed on the respective remote nodes) See environments/default/actions
port: 8093 # OPTIONAL The Platform Manager port number. Default: 8093
secure: true # OPTIONAL Indicates whether to use SSL. Valid values: true (use SLL)|false (do not use SSL). Default: true
credentials: ${spm.credentials.alias} # The credentials alias for the Platform Manager "Administrator" user. Default: DEFAULT_ADMINISTRATOR
bootstrapInfo: # OPTIONAL Bootstrapping details.
installer: bootstrap.installer # OPTIONAL The file name of the Command Central bootstrap installer to use for
# bootstrapping Platform Manager.
installDir: /install/dir # OPTIONAL The installation directory. The default value depends on the target operating system,
# for example /opt/softwareag on UNIX
repo.spm: repositoryName # OPTIONAL DEPRECATED. Use the installer parameter instead. The repository to use for bootstrapping
# Platform Manager. Default: the repository with the latest release version.
# Use this CLI command: sagcc list repository products properties=displayName
platform: platformCode # OPTIONAL DEPRECATED. Use the installer parameter instead. The target operating system.
# The default value is the code of THIS Command Central platform, for example LNXAMD64 or W64.
# Use this CLI command: cc list repository platforms local
substituteUserCredentials: ${subst.credentials.alias} # OPTIONAL For remote bootstrap: the alias of the substitute user credentials
# to use to install and start Platform Manager.
userName: substituteUser # REQUIRED DEPRECATED Use the substituteUserCredentials parameter. The name of the substitute user.
password: substitutePass # OPTIONAL DEPRECATED Use the substituteUserCredential
credentials: ${credentials.alias} # REQUIRED For remote bootstrap: the SSH credentials to connect to the remote hosts for
# authenticationMethod: PASSWORD.
userName: # REQUIRED DEPRECATED. Use the credentials parameter. The name of the user with SSH priviliges.
password: # OPTIONAL DEPRECATED. Use the credentials parameter. The user password.
authenticationMethod: # OPTIONAL Valid values: PASSWORD, INTERACTIVE, or CERTIFICATE
privateKey: ~/.ssh/id_rsa # OPTIONAL, The location of the privateKey file for authenticationMethod: CERTIFICATE
node1: # REQUIRED The unique alias of node1. Validated, do not use ^\w+[\w\-\.]*$
host: node1host.com # The hostname for node1.
actions: # OPTIONAL (executed on the respective remote node) See environments/default/actions
envType1: # OPTIONAL The environment type.
aliasMapping: # OPTIONAL The type of policy to use when mapping host names to node aliases for envType1.
policy: HOSTNAME # OPTIONAL Uses HOSTNAME as the node alias mapping policy for envType1.
node1: # The alias of node1.
host: localhost # The hostname for node1 in envType1
port: 8192 # The Platform Manager port, different from the default port.
bootstrapInfo:
installDir: /other/path # The installation directory. Specify a location path different from the default installation directory.

layers: # OPTIONAL The definition of layers.
default: # OPTIONAL The default parameters for all layers.
productRepo: repositoryName # REQUIRED The name of a product repository. You can specify a repository defined in the "environments"
# section or run this command to get a list of repositories: cc list repository products properties=displayName
fixRepo: repositoryName # REQUIRED The name of a fix repository. You can specify a repository defined in the "environments"
# section or run this command to get a list of repositories:
# sagcc list repository fixes properties=displayName
actions: # OPTIONAL (executed on the respective remote nodes) See environments/default/actions

layer1: # REQUIRED A unique alias for the layer (the alias is unique within THIS template), validation: ^\w+[\w\-\.]*$
description: Layer One # OPTIONAL A description of the layer. Not validated.
productRepo: repositoryName # OPTIONAL The name of a product repository. Default: layers/default/productRepo
fixRepo: repositoryName # OPTIONAL The name of a fix repository. Default: layers/default/fixRepo
templates: # REQUIRED An ordered list of templates. The list can be empty.
- inlineTemplate1 # OPTIONAL An alias of an inline template. The alias should be defined in THIS template.
- inlineTemplate2 # OPTIONAL Another alias of an inline template. The alias should be defined in THIS template.
actions: # OPTIONAL The actions are executed on the respective remote nodes.
# See the comments for environments/default/actions
databases: # OPTIONAL Database actions, such as creating a database schema and storage (performed by DBConfigurator).
dbAction1: # REQUIRED The name of the action.
description: IS/TN storage and schemas
components: [STR] # REQUIRED (except when you specify "products") The DBConfigurator codes for the database components.
products: [IS,TN] # REQUIRED (except when you specify "components") The DBConfigurator IDs of products.
db.type: sqlserver # OPTIONAL Any number of arbitrary properties.
db.url: "jdbc:sqlserver://dbhost1.eur.ad.sag:1433"
db.username: foo
db.password: bar
db.admin.username: sa
db.admin.password: manage
dbAction2:
components: [STR]
db.type: sqlserver
db.url: "jdbc:sqlserver://dbhost2.eur.ad.sag:1433"
db.username: foo
db.password: bar
dbAction2:
products: [MWS]
db.type: sqlserver
db.url: "jdbc:sqlserver://dbhost2.eur.ad.sag:1433"
db.username: foo
db.password: bar
layer2: # REQUIRED, A unique alias of another layer.
templates: [] # An empty template list means that the nodes of this layer will not get processed.

migration: # OPTIONAL The environment migration details.
sourceType: NODES # OPTIONAL The source type to use for migration. Valid values: NODES|ARCHIVES. Default: NODES
archives: # OPTIONAL The configuration of the source archives. This parameter is used only when "sourceType"
# is set to ARCHIVES.
targetPath: /home/myuser/backup.zip # OPTIONAL The location of the source archive.
options: # OPTIONAL Options to prepare the source node for migration.
snapshot: # OPTIONAL Indicates whether to create a template from each source node.
execute: false # OPTIONAL Executes the "create" template. Valid values: true|false. Default: false
pause: # OPTIONAL Indicates whether to pause all source runtime components.
execute: true # OPTIONAL Executes "pause" lifecycle operation. Valid values: true|false. Default: true
shutdown: # OPTIONAL Stop all source runtime components, including Platform Manager.
execute: true # OPTIONAL Executes "stop" lifecycle operation. Valid values: true|false. Default: true
backup: # OPTIONAL Indicates whether to create a backup of the source installation directory
# on the same host machine and transfer the backup archive to Command Central.
execute: true # OPTIONAL Executes "backup" of source installation directory. Valid values: true|false.
# Default: false when doing migration on same hosts
excludes: # OPTIONAL Indicates which files to exclude from the backup archive.
patterns: ["*.log", "*.jar", "*.zip", "path/to/directory/to/exclude/*"] # OPTIONAL Excludes the specified file types and
# file directories. Default: ["*.log"]
except: ["wm-caf-server.jar", "dd-cjdbc.jar", "template.zip"] # OPTIONAL Excludes specific files, identified by file name.
# Valid values: a list of file names. Default: []
rename: # OPTIONAL Indicates whether to rename the source installation directory.
execute: true # OPTIONAL Executes "rename" the source directory. Valid values: true|false,
# Default: true when doing an overinstall migration (migration on the same host and installation directory).
targetPath: /install/dir_renamed # OPTIONAL The location of the renamed source installation directory.
# Default: migration_source_<installDir>
source: # OPTIONAL A map of layers to source nodes. Default: layers to nodes provisioning map
default: # OPTIONAL Default parameters that apply to any environment type.
layer1: node1 # REQUIRED A list of source node aliases for "layer1"
layer2: # REQUIRED A list of source node aliases for "layer2". An empty list indicates that source nodes
# are not allocated for this layer.
envType1: # OPTIONAL A migration source map for "envType1" if different from "default".
layer1: [node1, node2] # OPTIONAL A list of source node aliases for "layer1" if different from "default".
layer2: [node1] # OPTIONAL A list of source node aliases for "layer2" if different from "default".
nodes: # OPTIONAL The source nodes from which to migrate. Default: managed provisioning nodes.
default: # OPTIONAL The default source parameters.
default: # OPTIONAL The default parameters for ANY "nodeAlias" that does not have an explicit definition.
# host: nodeAlias # IMPLICIT The mapping of the "nodeAlias" to a hostname for this source node.
port: 8093 # OPTIONAL The number of the Platform Manager port. Default: 8093
secure: true # OPTIONAL Indicates whether to use SSL. Valida values: true|false. Default: true
bootstrapInfo: # OPTIONAL The information required for bootstrapping Platform Manager.
installDir: /install/dir # OPTIONAL The source node installation directory. Default: depends on the target operating system,
# for example /opt/softwareag on UNIX.
repoName: repositoryName # OPTIONAL The repository to use for bootstrapping Platform Manager on the source installation
# (if not available). Default: the repository with the latest release version.
platform: platformCode # OPTIONAL The target operating system. The default value is the code of THIS Command Central platform,
# for example LNXAMD64 or W64.
credentials: # OPTIONAL The remote SSH connection credentials.
userName: # REQUIRED The name of the user with SSH priviliges.
password: # OPTIONAL The user password.
authenticationMethod:# OPTIONAL Valid values: PASSWORD, INTERACTIVE, or CERTIFICATE
privateKey: ~/.ssh/id_rsa # OPTIONAL The privateKey file location when authenticationMethod: CERTIFICATE
envType1: # OPTIONAL The type of the source environment.
node1: # The alias of "node1".
host: localhost # The hostname for "node1" in "envType1".
port: 8192 # A non-default port.
bootstrapInfo:
installDir: /other/path# A non-default location path for the installation directory.

provision: # REQUIRED when the node alias mapping policy is INDEX. OPTIONAL when policy HOSTNAME|EXISTING.
# Maps which layers to provision on which nodes.
default: # OPTIONAL Default properties that apply to any environment type.
spm: # REQUIRED for "aliasMapping/policy: INDEX". The first layer in a provisioning/envType section is the
# infrastructure layer and always includes the "hosts" parameter.
hosts: [host1, host2, host3] # REQUIRED A list of all Platform Manager nodes to use in all layers defined in the template.
layer1: # REQUIRED A list of node aliases on which to apply "layer1".
aliases: [nodePrefix_1,nodePredfix_2] # REQUIRED when "aliasMapping/policy:INDEX". A list of node aliases. Each alias is formed from
# "aliasMapping/prefix:" parameter and an index number that indicates the consecutive
# the value of the order of the host in the "spm/hosts" parameter. Use "_" as a separator in
# the indexed node alias.
layer2: # REQUIRED A list of node aliases for "layer2".
index: [2,3] # REQUIRED when "aliasMapping/policy:INDEX". A list of indexes. Each index in the list indicates the
# consecutive order of the host (on which to install the layer) in the "spm/hosts" parameter.
layer3: # REQUIRED A list of node aliases for "layer3". An empty list indicates that no nodes are allocated
# for this layer.
envType1: # OPTIONAL The provisioning map for "envType1" if different from the "default" section.
layer1: [node1,node2] # OPTIONAL A list of node aliases for "layer1" if different from the "default" section.
layer2: [node1] # OPTIONAL A list of node aliases for "layer2" if different from the "default" section.

templates: # OPTIONAL The inline templates.
default: # OPTIONAL The default template. You can define only actions for the "default" template.
actions: # OPTIONAL The actions are executed on the respective remote nodes. See the comments for
# environments/default/actions
templateActionDefault: # REQUIRED The name of the action.
namePrefix: hexTimestamp|none # OPTIONAL Indicates whether Command Central adds a prefix to the names of action files created
# on the file system. "hexTimestamp" (default) - the filename for an action is prefixed by
# a hexadecimal representation of the timestamp at the time of template evaluation.
# "none" - the filename for an action does not get a prefix.
# If not included (default), Command Central adds prefixes to action file names to prevent
overwriting the files.
inlineTemplate1: # REQUIRED A unique alias for the template. The alias is unique within THIS template.
# Validated, do not use ^\w+[\w\-\.]*$
description: example1 # OPTIONAL A description of the template. Not validated.

files: # OPTIONAL A list of files to copy from the template to the target installation directory.
"target/file1": "src/file" # The syntax is "target path": "template source file"
"file2": "src/path/file" # Another file to copy.

licenses: # OPTIONAL A list of license key aliases to copy from the license repository to the target
# installation directory.
"target/licenseKey1": "${alias1}" # The syntax is "target license key path": "license key alias". The "${alias}" value is not
# case-sensitive and you can use wildcard characters, for example:
"licenseKey2": "${alias2}" # "target/licenseKey": "*_<productCode>_<majorVersion>.*_${os.platform}" Another license key to copy.
actions: # OPTIONAL The actions are executed on the respective remote nodes. See the comments for
# environments/default/actions
products: # OPTIONAL A list of products to install from "productRepo: repositoryName" defined for the parent layer.
product1: # REQUIRED The ID of "product1".
# To retrieve a list of product IDs, run this command: sagcc list repository products content repositoryName
product2: # REQUIRED The ID of "product2".
instance1: # REQUIRED An instance name for "product2". You specify the name as reference ${instance.name} within its scope.
# The instance name can be "default" for products that do not support instance management.
instanceParam1: value1 # OPTIONAL Parameter1 of the product instance.
instanceParam2: value2 # OPTIONAL Parameter2 of the product instance.
configuration: # OPTIONAL The configuration settings for product2/instance1
runtimeComponent1: # REQUIRED The ID of run-time component1. You can use the implicit ${instance.name} variable.
CONFIG-TYPE1: # REQUIRED A supported configuration type1 for "runtimeComponent1".
CONFIG-TYPE1-i1: # REQUIRED An existing or new configuration instance "i1" of the parent "CONFIG-TYPE1".
Field1: v1 # YAML or JSON representation of the configuration data.
Field2: # Based on the CONFIG-TYPE1 schema, some fields are required and some are optional.
Field3: v3 # The field values can use ${parametersAsVariables}
Field4: ${param1}
CONFIG-TYPE2: # Another configuration type.
CONFIG-TYPE2-i2: "${param2}" # REQUIRED You can format the configuration data as plain text.
CONFIG-TYPE3:
CONFIG-TYPE3-i3: | # You can format the configuration data a as multi-line plain text.
multi line1
multi line2
multi line3
CONFIG-TYPE3: &reference # OPTIONAL A label that can be used for re-use (see the next CONFIG-TYPE3 parameter).
CONFIG-TYPE3-i3: | # If a configuration type supports XML format, you can format the configuration data as XML.
<foo>
<bar/>
</foo>
rcid-${instance.name}: # REQUIRED The ID of another run-time component. You can use the implicit ${instance.name} variable.
CONFIG-TYPE3: *reference # Re-uses the definition of the same configuration type.

fixes: [fix1_v1, MWS_10.3_Fix2]|ALL # OPTIONAL A list of fixes to install from "fixRepo: repositoryName" defined for the parent layer.
# To retrieve a list of fix names (with or without the version) or Empower fix IDs,
# run this command: sagcc list repository fixes content repositoryName
# When "fixes: ALL", Command Central installs all fixes for the products defined in the template.
patches: [patchKey1, patchKey2] # OPTIONAL A list of support patch IDs. The support patches are installed in the order in which they are listed.
# If the list is empty "[]", Command Central does note install any support patches. If you specify a list
# of "fixes:" and a list of "patches:", Command Central first installs the fixes and then the patches.
inlineTemplate2: # Another inline template definition. An empty template definition does nothing.